[ 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]

Reply via email to