commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Simon Kitching (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (LOGGING-111) Small patch to make debugging easier
Date Mon, 20 Nov 2006 07:33:05 GMT
     [ 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:
> [LogFactoryImpl@14810083 from org.apache.catalina.loader.WebappClassLoader@1904280] Could
not instantiate Log 'org.apache.commons.logging.impl.Log4JLogger' -- java.lang.reflect.InvocationTargetException:
null
> which explains, basically, nothing, you get for example:
> [LogFactoryImpl@14810083 from org.apache.catalina.loader.WebappClassLoader@1904280] Could
not instantiate Log 'org.apache.commons.logging.impl.Log4JLogger' -- java.lang.reflect.InvocationTargetException:
null
> [LogFactoryImpl@14810083 from org.apache.catalina.loader.WebappClassLoader@1904280] ...
InvocationTargetException: java.lang.ExceptionInInitializerError: null
> [LogFactoryImpl@14810083 from org.apache.catalina.loader.WebappClassLoader@1904280] ...
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: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message