[
https://issues.apache.org/jira/browse/LOG4J2-223?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13661602#comment-13661602
]
Nick Williams commented on LOG4J2-223:
--------------------------------------
I don't think the hook _has_ to be able to be enabled/disabled.
{{Log4jContextListener}} calls {{stop()}} on the {{LoggerContext}}, and
{{stop()}} removes the shutdown hook. So, used this way, the shutdown hook
isn't a problem, it just isn't used. That's why everything's okay when using
the {{BasicContextSelector}}. (I'm not saying it's a _bad_ idea to provide way
to enable/disable the shutdown hook. It wouldn't hurt.)
So here are the philosophical or real issues that need to be resolved/answered,
from my perspective:
# Why does {{BasicContextSelector}} work and {{ClassLoaderContextSelector}} not
work in a web application when a {{Log4jContextListener}} is properly used?
# Is there any way to make logging "just work" in a web application without
creating a listener and/or filter? I'm starting to become convinced that there
isn't, and that disappoints me.
# Would {{Log4jContextListener}} and {{JNDIContextFilter}} ever both be used at
the same time, and would doing that cause a malfunction?
Assuming the ultimate conclusion is that logging can't "just work" in a web
application and a listener/filter is required, I would like to drastically
simplify usage of the log4j-web module. My thoughts on it are:
# There should only be a listener, not a filter.
# There should be no init parameters; everything should be automatic and follow
normal Log4j conventions.
# There should be a {{META-INF/web-fragment.xml}} file that creates the filter
automatically so that if the user is using a Servlet 3.0 or newer container he
doesn't even have to consciously create the filter, he just has to include the
JAR.
# It should be in the Core module, so that it works automatically in web
applications.
I make these arguments because, here I am, a committer on the project and an
avid reader of the documentation, and I still had no idea the
{{Log4jContextListener}} and/or {{JNDIContextFilter}} were required to make
logging work properly in a web application.
> IllegalStateException thrown during Tomcat shutdown
> ---------------------------------------------------
>
> Key: LOG4J2-223
> URL: https://issues.apache.org/jira/browse/LOG4J2-223
> Project: Log4j 2
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.0-beta5
> Reporter: Ralph Goers
> Priority: Critical
> Fix For: 2.0-beta7
>
> Attachments: log4j-223.war
>
>
> {noformat}Apr 25, 2013 3:03:33 PM org.apache.catalina.core.StandardServer
> await
> INFO: A valid shutdown command was received via the shutdown port. Stopping
> the Server instance.
> Apr 25, 2013 3:03:33 PM org.apache.coyote.AbstractProtocol pause
> INFO: Pausing ProtocolHandler ["http-nio-8080"]
> Apr 25, 2013 3:03:33 PM org.apache.coyote.AbstractProtocol pause
> INFO: Pausing ProtocolHandler ["ajp-nio-8009"]
> Apr 25, 2013 3:03:33 PM org.apache.catalina.core.StandardService stopInternal
> INFO: Stopping service Catalina
> Apr 25, 2013 3:03:33 PM org.apache.coyote.AbstractProtocol stop
> INFO: Stopping ProtocolHandler ["http-nio-8080"]
> Apr 25, 2013 3:03:33 PM org.apache.coyote.AbstractProtocol stop
> INFO: Stopping ProtocolHandler ["ajp-nio-8009"]
> Apr 25, 2013 3:03:33 PM org.apache.coyote.AbstractProtocol destroy
> INFO: Destroying ProtocolHandler ["http-nio-8080"]
> Apr 25, 2013 3:03:33 PM org.apache.coyote.AbstractProtocol destroy
> INFO: Destroying ProtocolHandler ["ajp-nio-8009"]
> Apr 25, 2013 3:03:33 PM org.apache.catalina.loader.WebappClassLoader loadClass
> INFO: Illegal access: this web application instance has been stopped already.
> Could not load org.apache.logging.log4j.core.config.NullConfiguration. The
> eventual following stack trace is caused by an error thrown for debugging
> purposes as well as to attempt to terminate the thread which caused the
> illegal access, and has no functional impact.
> java.lang.IllegalStateException
> at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1351)
> at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1310)
> at
> org.apache.logging.log4j.core.LoggerContext.stop(LoggerContext.java:171)
> at
> org.apache.logging.log4j.core.LoggerContext$ShutdownThread.run(LoggerContext.java:389)
> Exception in thread "Thread-18" java.lang.NoClassDefFoundError:
> org/apache/logging/log4j/core/config/NullConfiguration
> at
> org.apache.logging.log4j.core.LoggerContext.stop(LoggerContext.java:171)
> at
> org.apache.logging.log4j.core.LoggerContext$ShutdownThread.run(LoggerContext.java:389)
> Caused by: java.lang.ClassNotFoundException:
> org.apache.logging.log4j.core.config.NullConfiguration
> at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1465)
> at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1310)
> ... 2 more{noformat}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
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]