{"componentChunkName":"component---node-modules-gatsby-theme-medium-to-own-blog-src-templates-blog-post-js","path":"/instant-logging-harness-the-power-of-log4j-with-jabber/","result":{"data":{"site":{"siteMetadata":{"siteUrl":"https://javame.netlify.app","githubUrl":"https://github.com/aterreno/blog"}},"mdx":{"fields":{"slug":"/instant-logging-harness-the-power-of-log4j-with-jabber/"},"excerpt":"A former collegue of mine was asking me how to see the log if the deploy is on a server with strict restriction… After searching a bit (mail…","timeToRead":1,"frontmatter":{"title":"Instant logging: Harness the power of log4j with Jabber","description":"","categories":[],"date":"October 23, 2006","canonical_link":"https://javame.netlify.app//instant-logging-harness-the-power-of-log4j-with-jabber-b7a94af98658"},"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Instant logging: Harness the power of log4j with Jabber\",\n  \"description\": \"\",\n  \"date\": \"2006-10-23T00:00:00.000Z\",\n  \"categories\": [],\n  \"published\": true,\n  \"canonical_link\": \"https://javame.netlify.app//instant-logging-harness-the-power-of-log4j-with-jabber-b7a94af98658\",\n  \"redirect_from\": [\"/instant-logging-harness-the-power-of-log4j-with-jabber-b7a94af98658\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"A former collegue of mine was asking me how to see the log if the deploy is on a server with strict restriction\\u2026 After searching a bit (mail was not good, database neither) I found this funny way to log events\\u2026 It\\u2019s really cool!\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"http://www-128.ibm.com/developerworks/java/library/j-instlog/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow noopener noreferrer\"\n  }), \"Instant logging: Harness the power of log4j with Jabber\"), mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"Writing an IM-based appender\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"The code outlined in this article shows how you can extend the log4j framework to integrate IM features. It\\u2019s designed to enable a log4j-compliant application to log its output onto IM networks. The IM appender actually works as a customized IM client. However, instead of System.out, files, or TCP sockets, it takes IM networks as the underlying output device.\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"To provide IM support, we don\\u2019t need to reinvent the wheel when developing ad-hoc solutions. Instead, we\\u2019re going to leverage a tool we consider the best of breed: Jabber. Jabber is an open, XML-based protocol for instant messaging and presence, developed by the Jabber community and supported by the non-profit Jabber Software Foundation.\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"We chose Jabber over other IM systems because it offers a wide variety of benefits, including its:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Open nature: Unlike other proprietary systems, Jabber\\u2019s specifications and source code are freely available, allowing anyone to create Jabber implementations at no cost.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Simplicity: Jabber uses simple protocols based on XML as its standard data format, and follows the well-understood client/server architecture.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Interoperability with other IM systems: Jabber transport modules make it possible for Jabber users to reach other instant messaging systems such as AIM, Yahoo! Messenger, and ICQ.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Resource awareness: Jabber provides explicit support for multiple client access. The same user can connect simultaneously to the Jabber server with different clients (or resources), and messages will be routed properly to the best resource available.\")));\n}\n;\nMDXContent.isMDXComponent = true;"},"allWebMentionEntry":{"nodes":[]}},"pageContext":{"id":"13ec10ed-c6bd-5ea5-96ed-a23498568eb2","previous":{"id":"97282a52-66ae-5f2a-af77-2e46fbf0da60","fields":{"slug":"/what-about-agile-estimating-and-planning/","published":true},"frontmatter":{"redirect_from":["/what-about-agile-estimating-and-planning-72a2c5fbf28e"],"redirect_to":null,"title":"What about Agile Estimating and Planning?"}},"next":{"id":"c1098bd4-6c61-5248-bc08-497c762bb478","fields":{"slug":"/invest-and-smart-how-to-write-good-stories/","published":true},"frontmatter":{"redirect_from":["/invest-and-smart-how-to-write-good-stories-6479fb084f3b"],"redirect_to":null,"title":"Invest and smart: how to write good stories"}},"permalink":"https://javame.netlify.app/instant-logging-harness-the-power-of-log4j-with-jabber/","themeOptions":{"plugins":[],"config":{"title":"Antonio Terreno","description":"Antonio Terreno's blog archive","shortBio":"","bio":"Principal Consultant at Equal Experts","author":"Antonio Terreno","githubUrl":"https://github.com/aterreno/blog","siteUrl":"https://javame.netlify.app/","social":{"twitter":"javame","medium":"","facebook":"","github":"aterreno","linkedin":"antonioterreno","instagram":"tritonitri"},"goatCounterCode":null}}}},"staticQueryHashes":["4131332129","645483741"]}