Why the complete lack of response?
If something like that was in the code earlier, it would save me a good
couple of hours, so I believe it is useful enough to be included. I
can't be the only one who encountered this problem.
Or is it the wrong list?
Greetings, Lilianne E. Blaze
Lilianne E. Blaze wrote:
Hello,
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;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]