logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Remko Popma (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LOG4J2-493) NPE in AsyncLogger.shutdown
Date Sat, 11 Jan 2014 05:54:51 GMT

    [ https://issues.apache.org/jira/browse/LOG4J2-493?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13868670#comment-13868670
] 

Remko Popma commented on LOG4J2-493:
------------------------------------

Kireet,
I will think about how to solve this with AsyncLogger.

Meanwhile, can you try if one of these two workarounds solves the problem?
* Package the log4j2 jars with your web applications (and remove them from $catalina.home/lib).
Using the webapp classloader instead of the shared classloader should solve the problem.
* Instead of making all loggers Asynchronous with the {{Log4jContextSelector}} system property,
use [mixed sync and async loggers|http://logging.apache.org/log4j/2.x/manual/async.html#MixedSync-Async].
In the log4j2.xml configuration for your apps, replace {{root}} by {{AsyncRoot}} and {{logger}}
by {{AsyncLogger}} elements. (Don't forget to remove the  {{Log4jContextSelector}} system
property setting.) Mixed sync/async logging has a different implementation that should not
suffer from the problem you describe.

> NPE in AsyncLogger.shutdown
> ---------------------------
>
>                 Key: LOG4J2-493
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-493
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0-beta9
>         Environment: tomcat 7.0.42
>            Reporter: Kireet Reddy
>
> When redeploying my application in tomcat multiple times, I get an exception:
> Exception in thread "Thread-29" java.lang.NullPointerException
>         at org.apache.logging.log4j.core.async.AsyncLogger.stop(AsyncLogger.java:249)
>         at org.apache.logging.log4j.core.async.AsyncLoggerContext.stop(AsyncLoggerContext.java:56)
>         at org.apache.logging.log4j.core.LoggerContext$ShutdownThread.run(LoggerContext.java:437)
> This seems to be due to the fact that some initialization code happens in the class initializer
but is undone in the stop() method which is called during webapp undeployment. This causes
issues because in this case the log4j jar is loaded by the shared classloader ($catalina.home/lib)
rather than the webapp classloader. This means the AsyncLogger class is not re-created during
webapp deployment. 
> I am using this structure because I have many 3rd party libraries and want to keep redeployments
lightweight. 



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org


Mime
View raw message