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