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

Lukas Vogel commented on LOG4J2-1606:
-------------------------------------

Our workaround is:
# Initialize the logger with XML configuration through a VM argument. 
(-Dlog4j.configurationFile=PATH/TO/CONFIG/FILE/log4j2.xml)
# Initialize further programmatic state needed for logging in a 
ServletContainerInitializer
# Use a ServletContextListener that does the de-initialization

This solves all of our issues we had, and we don't need to rely on log4j-web.

> log4j-web deinitalizes the Logger too early if listeners defined in web.xml 
> use it 
> -----------------------------------------------------------------------------------
>
>                 Key: LOG4J2-1606
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1606
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Web/Servlet
>    Affects Versions: 2.6.2
>         Environment: Java8, Linux/Mac, Tomcat
>            Reporter: Lukas Vogel
>
> We use log4j in a Apache Tomcat environment.
> In the web.xml file we define a custom ServerStartup listener that 
> initializes the DB etc and logs both in contextInitialized and 
> contextDestroyed.
> If we use the log4j-web package the class Log4jServletContainerInitializer 
> initializes the logger and adds a Log4jServletContextListener to the 
> ServletContext. Since this listener is added after our listener the method 
> Log4jServletContextListener#contextDestroyed is called before our listener's 
> contextDestroyed method. Thus the Logger is de-initialized too early.
> We could disable auto initialization and initialize the logger ourselves but 
> then doing it in the listener is too late since the WebService-framework 
> (Metro glassfish) initializes the webservice endpoints before the listener. 
> Since we use static logger variables in those webservice classes this would 
> trigger the message "StatusLogger no log4j configuration found..."  because 
> the logger was not yet initialized.
> One possible patch we see is that we make an option to manually add the 
> Log4jServletContextListener:
> In Log4jServletContainerInitializer we would put an "if (! Manually added)" 
> around the  call "servletContext.addListener(new 
> Log4jServletContextListener());" and then we could manually add it to the 
> listeners in web.xml
> If you have any other suggestions I would be glad to hear them.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to