<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Logging abstraction is utterly pointless</title>
	<atom:link href="http://depressedprogrammer.wordpress.com/2007/09/12/logging-abstraction-is-utterly-pointless/feed/" rel="self" type="application/rss+xml" />
	<link>http://depressedprogrammer.wordpress.com/2007/09/12/logging-abstraction-is-utterly-pointless/</link>
	<description>Because programming is depressing</description>
	<lastBuildDate>Thu, 05 Nov 2009 23:29:15 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: bonus enquete casino on net</title>
		<link>http://depressedprogrammer.wordpress.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-485</link>
		<dc:creator>bonus enquete casino on net</dc:creator>
		<pubDate>Wed, 02 Apr 2008 21:32:09 +0000</pubDate>
		<guid isPermaLink="false">http://arsenalist.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-485</guid>
		<description>&lt;strong&gt;jeu de boule casino&lt;/strong&gt;</description>
		<content:encoded><![CDATA[<p><strong>jeu de boule casino</strong></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rob Bygrave</title>
		<link>http://depressedprogrammer.wordpress.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-484</link>
		<dc:creator>Rob Bygrave</dc:creator>
		<pubDate>Wed, 26 Mar 2008 01:30:49 +0000</pubDate>
		<guid isPermaLink="false">http://arsenalist.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-484</guid>
		<description>In regards your question, how to get juli to load a logging.properties file from the classpath.

I believe you have to have code that you know will execute very early in your application(perferably the first thing), and have that call LogManager.getLogManager().readConfiguration(inputstream); where inputstream is for your classpath loggging.properties file.

The problem is to know/have bit of code that does this either first thing (or early enough) in the bootup of your application. Not always easy... it would be nice if this was part of the default behaviour of LogManager.</description>
		<content:encoded><![CDATA[<p>In regards your question, how to get juli to load a logging.properties file from the classpath.</p>
<p>I believe you have to have code that you know will execute very early in your application(perferably the first thing), and have that call LogManager.getLogManager().readConfiguration(inputstream); where inputstream is for your classpath loggging.properties file.</p>
<p>The problem is to know/have bit of code that does this either first thing (or early enough) in the bootup of your application. Not always easy&#8230; it would be nice if this was part of the default behaviour of LogManager.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: musachy</title>
		<link>http://depressedprogrammer.wordpress.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-472</link>
		<dc:creator>musachy</dc:creator>
		<pubDate>Fri, 28 Sep 2007 17:39:36 +0000</pubDate>
		<guid isPermaLink="false">http://arsenalist.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-472</guid>
		<description>I like guice docs: http://docs.google.com/View?docid=dd2fhx4z_5df5hw8, and yes changing something under JAVA_HOME just to setup logging is way too much :)</description>
		<content:encoded><![CDATA[<p>I like guice docs: <a href="http://docs.google.com/View?docid=dd2fhx4z_5df5hw8" rel="nofollow">http://docs.google.com/View?docid=dd2fhx4z_5df5hw8</a>, and yes changing something under JAVA_HOME just to setup logging is way too much <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Lawrey</title>
		<link>http://depressedprogrammer.wordpress.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-478</link>
		<dc:creator>Peter Lawrey</dc:creator>
		<pubDate>Fri, 14 Sep 2007 20:29:31 +0000</pubDate>
		<guid isPermaLink="false">http://arsenalist.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-478</guid>
		<description>If you don&#039;t care about logging abstract why use Log4j at all.
You can just use plain old System.out/System.err, which I redirect to LOG.info and LOG.error anyway.
We have been using common-logging/log4j with tomcat for about a year now and we haven&#039;t seen any issues.

Where I work we support System.out,err/commons-logging/log4j as different libraries use different logging techniques. (All them end up in Log4j for consistent configuration)</description>
		<content:encoded><![CDATA[<p>If you don&#8217;t care about logging abstract why use Log4j at all.<br />
You can just use plain old System.out/System.err, which I redirect to LOG.info and LOG.error anyway.<br />
We have been using common-logging/log4j with tomcat for about a year now and we haven&#8217;t seen any issues.</p>
<p>Where I work we support System.out,err/commons-logging/log4j as different libraries use different logging techniques. (All them end up in Log4j for consistent configuration)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: WarpedJavaGuy</title>
		<link>http://depressedprogrammer.wordpress.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-465</link>
		<dc:creator>WarpedJavaGuy</dc:creator>
		<pubDate>Fri, 14 Sep 2007 10:59:12 +0000</pubDate>
		<guid isPermaLink="false">http://arsenalist.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-465</guid>
		<description>It wasn&#039;t my choice actually.  It&#039;s was an existing application for a client that I provided services to and these were my observations.  Working on the project definitely did have it&#039;s challenges, that&#039;s for sure.  Trying to get the logging to work was just one of them.</description>
		<content:encoded><![CDATA[<p>It wasn&#8217;t my choice actually.  It&#8217;s was an existing application for a client that I provided services to and these were my observations.  Working on the project definitely did have it&#8217;s challenges, that&#8217;s for sure.  Trying to get the logging to work was just one of them.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: AngryA</title>
		<link>http://depressedprogrammer.wordpress.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-474</link>
		<dc:creator>AngryA</dc:creator>
		<pubDate>Fri, 14 Sep 2007 06:59:32 +0000</pubDate>
		<guid isPermaLink="false">http://arsenalist.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-474</guid>
		<description>To warped explanation of the classloader &quot;problem&quot; in a webcontainer,

Pure FUD: You can&#039;t half-ass bundle your webapps.

Bundle the app and not the dependencies, leave it to the container and you have no problem and let you customers know that your installation model and it&#039;s chaos. Have fun supporting that, I hope they chose to install the same version of your dependencies as you wanted.

Pick some of your dependencies and hope everything works out for you &amp; getting logging working is half your problem.
I hope whatever random version the client had lying about was the same one you tested and built with.

Package your webapp with exactly what it needs to run and you will no trouble.</description>
		<content:encoded><![CDATA[<p>To warped explanation of the classloader &#8220;problem&#8221; in a webcontainer,</p>
<p>Pure FUD: You can&#8217;t half-ass bundle your webapps.</p>
<p>Bundle the app and not the dependencies, leave it to the container and you have no problem and let you customers know that your installation model and it&#8217;s chaos. Have fun supporting that, I hope they chose to install the same version of your dependencies as you wanted.</p>
<p>Pick some of your dependencies and hope everything works out for you &amp; getting logging working is half your problem.<br />
I hope whatever random version the client had lying about was the same one you tested and built with.</p>
<p>Package your webapp with exactly what it needs to run and you will no trouble.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: AngryA</title>
		<link>http://depressedprogrammer.wordpress.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-473</link>
		<dc:creator>AngryA</dc:creator>
		<pubDate>Fri, 14 Sep 2007 06:52:30 +0000</pubDate>
		<guid isPermaLink="false">http://arsenalist.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-473</guid>
		<description>As a library vendor I have to ask myself if I’d like people who use complex environments to read and understand the complex class loading mechanism they have chosen to employ? Or do I want all users to configure 4 different logging mechanisms; all of which write to different files and don’t cooperate?

This is a real issue you can&#039;t just brush aside and say abstractions are pointless.

Another + for JCL is the simplicity with which you can actually create stub of the Log interface. All the other options require either larger interfaces that are less intuitive (slf4j), or more gymnastics to wire up objects that don&#039;t matter for what you want to test (jul, log4j).</description>
		<content:encoded><![CDATA[<p>As a library vendor I have to ask myself if I’d like people who use complex environments to read and understand the complex class loading mechanism they have chosen to employ? Or do I want all users to configure 4 different logging mechanisms; all of which write to different files and don’t cooperate?</p>
<p>This is a real issue you can&#8217;t just brush aside and say abstractions are pointless.</p>
<p>Another + for JCL is the simplicity with which you can actually create stub of the Log interface. All the other options require either larger interfaces that are less intuitive (slf4j), or more gymnastics to wire up objects that don&#8217;t matter for what you want to test (jul, log4j).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The Dynamic Discovery Paradox &#171; WarpedJavaGuy</title>
		<link>http://depressedprogrammer.wordpress.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-479</link>
		<dc:creator>The Dynamic Discovery Paradox &#171; WarpedJavaGuy</dc:creator>
		<pubDate>Fri, 14 Sep 2007 00:55:10 +0000</pubDate>
		<guid isPermaLink="false">http://arsenalist.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-479</guid>
		<description>[...] recent article about logging abstractions has inspired me to revisit the topic of class loaders and dynamic [...]</description>
		<content:encoded><![CDATA[<p>[...] recent article about logging abstractions has inspired me to revisit the topic of class loaders and dynamic [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: WarpedJavaGuy</title>
		<link>http://depressedprogrammer.wordpress.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-468</link>
		<dc:creator>WarpedJavaGuy</dc:creator>
		<pubDate>Thu, 13 Sep 2007 13:13:02 +0000</pubDate>
		<guid isPermaLink="false">http://arsenalist.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-468</guid>
		<description>Ok here goes..

App servers like Tomcat and WebSphere, for example, ship with their own versions of JCL and are configured to use a particular logging implementation (say Log4j or Java Logging API).  The problem occurs when you want to deploy a web application into the server that also uses its own JCL library and configures its own logging implementation.  Now, because there are multiple classloaders in this environment and multiple JCL libraries and implementations, which JCL will the class loader that loaded your JCL consumer have visibility to?  The server JCL or the WAR JCL?  It all depends on how you configure your class loading mode at the EAR and WAR levels.  If you use the PARENT_FIRST at the WAR level, then the classloader will first delegate the loading of classes to its parent classloader where it will find the server JCL.  This is not what you want!  If you use the PARENT_LAST at the WAR level, then the classloader will first attempt to load classes in your WAR where it will find your WAR JCL.  This is what you want. BUT the problem is that it&#039;s not all that simple.  Other class libraries that are deployed at the EAR level could be using JCL too?  What class loading mode are they using?  If your JCL consumer references one of those classes and the class loader that loads those loads the server JCL then you will have a conflict between the two JCL versions.  This is where things blow up.  The app server is not able to separate the server/container and application classloaders in a way that does not cause conflicts with the two versions of the of JCL classes.  It&#039;s the paradox that is using JCL in a J2EE environment.

Now if you were to replace the JCL in the WAR with the jcl-over-slf4j implementation you would still have the same problem.  Like the JCL library being replaced, it too is just another version of JCL classes that will confuse all class loaders.</description>
		<content:encoded><![CDATA[<p>Ok here goes..</p>
<p>App servers like Tomcat and WebSphere, for example, ship with their own versions of JCL and are configured to use a particular logging implementation (say Log4j or Java Logging API).  The problem occurs when you want to deploy a web application into the server that also uses its own JCL library and configures its own logging implementation.  Now, because there are multiple classloaders in this environment and multiple JCL libraries and implementations, which JCL will the class loader that loaded your JCL consumer have visibility to?  The server JCL or the WAR JCL?  It all depends on how you configure your class loading mode at the EAR and WAR levels.  If you use the PARENT_FIRST at the WAR level, then the classloader will first delegate the loading of classes to its parent classloader where it will find the server JCL.  This is not what you want!  If you use the PARENT_LAST at the WAR level, then the classloader will first attempt to load classes in your WAR where it will find your WAR JCL.  This is what you want. BUT the problem is that it&#8217;s not all that simple.  Other class libraries that are deployed at the EAR level could be using JCL too?  What class loading mode are they using?  If your JCL consumer references one of those classes and the class loader that loads those loads the server JCL then you will have a conflict between the two JCL versions.  This is where things blow up.  The app server is not able to separate the server/container and application classloaders in a way that does not cause conflicts with the two versions of the of JCL classes.  It&#8217;s the paradox that is using JCL in a J2EE environment.</p>
<p>Now if you were to replace the JCL in the WAR with the jcl-over-slf4j implementation you would still have the same problem.  Like the JCL library being replaced, it too is just another version of JCL classes that will confuse all class loaders.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ivan Memruk</title>
		<link>http://depressedprogrammer.wordpress.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-476</link>
		<dc:creator>Ivan Memruk</dc:creator>
		<pubDate>Thu, 13 Sep 2007 06:48:48 +0000</pubDate>
		<guid isPermaLink="false">http://arsenalist.com/2007/09/12/logging-abstraction-is-utterly-pointless/#comment-476</guid>
		<description>WarpedJavaGuy: I&#039;m not sure what you mean because the link you&#039;ve given points to a description of a guy who&#039;d successfully managed to direct all his logs to log4j without commons logging using the exact way that I had described earlier. From my experience, I can tell the same. jcl-over-slf4j is good for people like myself who don&#039;t want to waste their life figuring out each particular case of commons-logging behaviour and configuration and prefer having one single log config per application.
However, some frameworks use java.logging (e.g. facelets, as far as I remember), and I don&#039;t have a solution to override them to use log4j.. :(</description>
		<content:encoded><![CDATA[<p>WarpedJavaGuy: I&#8217;m not sure what you mean because the link you&#8217;ve given points to a description of a guy who&#8217;d successfully managed to direct all his logs to log4j without commons logging using the exact way that I had described earlier. From my experience, I can tell the same. jcl-over-slf4j is good for people like myself who don&#8217;t want to waste their life figuring out each particular case of commons-logging behaviour and configuration and prefer having one single log config per application.<br />
However, some frameworks use java.logging (e.g. facelets, as far as I remember), and I don&#8217;t have a solution to override them to use log4j.. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>
