[
https://issues.apache.org/jira/browse/LOGGING-111?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dennis Lundberg closed LOGGING-111.
-----------------------------------
Assignee: Simon Kitching
> Small patch to make debugging easier
> ------------------------------------
>
> Key: LOGGING-111
> URL: https://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
> Assignee: Simon Kitching
> 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.
-
You can reply to this email to add a comment to the issue online.