[ http://issues.apache.org/jira/browse/LOGGING-111?page=all ]
Simon Kitching resolved LOGGING-111. ------------------------------------ Resolution: Fixed > Small patch to make debugging easier > ------------------------------------ > > Key: LOGGING-111 > URL: http://issues.apache.org/jira/browse/LOGGING-111 > Project: Commons Logging > Issue Type: Improvement > Affects Versions: 1.1.0 > Environment: Commons-Logging + Log4j > Reporter: Lilianne E. Blaze > Fix For: 1.1.1 > > > During the last few days I had major problems trying to configure > Commons-Logging + Log4j on Glassfish. > It turned out to be related to Log4j UDPAppender, but it took me needlessly > long time to verify the problem was indeed in Log4j and not in > Commons-Logging, Glassfish or something else. Now, why am I posting it here > then - I made a small modification which logs Log4j failures more precisely, > instead of just: > [EMAIL PROTECTED] from [EMAIL PROTECTED] Could not instantiate Log > 'org.apache.commons.logging.impl.Log4JLogger' -- > java.lang.reflect.InvocationTargetException: null > which explains, basically, nothing, you get for example: > [EMAIL PROTECTED] from [EMAIL PROTECTED] Could not instantiate Log > 'org.apache.commons.logging.impl.Log4JLogger' -- > java.lang.reflect.InvocationTargetException: null > [EMAIL PROTECTED] from [EMAIL PROTECTED] ... InvocationTargetException: > java.lang.ExceptionInInitializerError: null > [EMAIL PROTECTED] from [EMAIL PROTECTED] ... ExceptionInInitializerError: > java.lang.IllegalStateException: Property layout must be set for UDPAppender > named appenderLocalhostUdp > which states clearly that Log4j was indeed loaded, and the problem was in its > configuration. > All it does is expand those two exceptions if they occurred. It could be more > general and more elegant, but this code should work in pre-1.4 Java. > Could you please include it in next build of Commons-Logging? > Attaching the patch text below. > Greetings, Lilianne E. Blaze > Index: LogFactoryImpl.java > *** > D:\Work\Projects\Apache\commons-logging-custom\src\org\apache\commons\logging\impl\LogFactoryImpl.java > Base (BASE) > --- > D:\Work\Projects\Apache\commons-logging-custom\src\org\apache\commons\logging\impl\LogFactoryImpl.java > Locally Modified (Based On LOCAL) > *************** > *** 1362,1369 **** > --- 1362,1388 ---- > + logAdapterClassName + "' -- " > + discoveryFlaw.getClass().getName() + ": " > + discoveryFlaw.getLocalizedMessage()); > + + if ( discoveryFlaw instanceof > InvocationTargetException ) { > + InvocationTargetException ite = > (InvocationTargetException)discoveryFlaw; > + Throwable cause = ite.getTargetException(); > + logDiagnostic("... InvocationTargetException: " + > + cause.getClass().getName() + ": " + > + cause.getLocalizedMessage()); > + + if( cause instanceof > ExceptionInInitializerError ) { > + ExceptionInInitializerError eiie = > (ExceptionInInitializerError)cause; > + Throwable cause2 = eiie.getException(); > + logDiagnostic("... ExceptionInInitializerError: " + > + cause2.getClass().getName() + ": " + > + cause2.getLocalizedMessage()); > + } > + } > + + } > + if (!allowFlawedDiscovery) { > throw new LogConfigurationException(discoveryFlaw); > } > Index: Log4JLogger.java > *** > D:\Work\Projects\Apache\commons-logging-custom\src\org\apache\commons\logging\impl\Log4JLogger.java > Base (BASE) > --- > D:\Work\Projects\Apache\commons-logging-custom\src\org\apache\commons\logging\impl\Log4JLogger.java > Locally Modified (Based On LOCAL) > *************** > *** 77,84 **** > --- 77,86 ---- > // ------------------------------------------------------------ > static { > + > if (!Priority.class.isAssignableFrom(Level.class)) { > // nope, this is log4j 1.3, so force an > ExceptionInInitializerError > + // note - it still works with log4j 1.3.8-alpha > throw new InstantiationError("Log4J 1.2 not available"); > } > *************** > *** 112,117 **** > --- 114,124 ---- > /** For use with a log4j factory. > */ > public Log4JLogger(Logger logger ) { > + + if( logger == null ) { > + throw new IllegalArgumentException("Warning - logger == null, > possible Log4j misconfiguration?"); > + } > + this.name = logger.getName(); > this.logger=logger; > } -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]