[
https://issues.apache.org/jira/browse/LOG4J2-658?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14105356#comment-14105356
]
Remko Popma commented on LOG4J2-658:
------------------------------------
To be frank, several things about this approach sound fragile to me. First,
there is the assumption that the log4j shutdown hook must run last. Why last?
Perhaps some other user comes up with a use case where they _have_ to run their
hook _after_ the log4j shutdown hook, who knows...
Second, there doesn't seem to be a clean way to enforce a certain shutdown hook
execution order. Having different logic for different JVM implementations,
based on reflection and depending on JVM implementation details feels like a
"last-resort" kind of solution.
How about a different approach?
Let's assume most users don't care about the shutdown order. For most users it
is okay to register the current shutdown hook by default.
Users who _do_ care are (I assume), users who are running their own shutdown
logic.
Why don't we provide a way for these users to:
# Disable the default shutdown hook. (How about a static method
{{Log4jShutdownHook.unregister()}} for example?)
# Manually call the log4j shutdown logic from their custom shutdown hook. This
could be as simple as {{new Log4jShutdownHook().run();}}) to be called from
inside the user custom shutdown hook when they are finished with whatever they
need to do before shutting down logging.
> shutdown hook called too early
> ------------------------------
>
> Key: LOG4J2-658
> URL: https://issues.apache.org/jira/browse/LOG4J2-658
> Project: Log4j 2
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.0-rc1, 2.0-rc2, 2.0.2
> Reporter: Romain Manni-Bucau
> Assignee: Matt Sicker
>
> Hi
> this issue follow few mail exchanges from the commons list. Here the
> interesting part for log4j2:
> {quote}
> Here what I do (we can move it to another thread since that's 100% log4j2
> related): unzip apache-tomee-1.7.0-SNAPSHOT-webprofile.zip && cd
> apache-tomee-webprofile-1.7.0-SNAPSHOT/ && rm conf/logging.properties &&
> echo 'openejb.log.factory=log4j'>conf/system.properties && cp ~/log4j2.xml
> conf/log4j2.xml && cp
> ~/.m2/repository/org/apache/logging/log4j/log4j-api/2.0-rc2-SNAPSHOT/log4j-api-2.0-rc2-SNAPSHOT.jar
> lib/ && cp
> ~/.m2/repository/org/apache/logging/log4j/log4j-core/2.0-rc2-SNAPSHOT/log4j-core-2.0-rc2-SNAPSHOT.jar
> lib/ && cp
> ~/.m2/repository/org/apache/logging/log4j/log4j-1.2-api/2.0-rc2-SNAPSHOT/log4j-1.2-api-2.0-rc2-SNAPSHOT.jar
> lib/ && ./bin/catalina.sh
> it makes server starting with log4j2 logs, if you ctrl+c logs are not
> printed. Sure it is cause context is closed too early and then loggers have
> NullConfiguration. (If I debug in java.lang.ApplicationShutdownHooks#runHooks
> to wait all hooks exec it works)
> {quote}
> Basically the issue is that when shutting down with ctrl+C some logs are
> swallowed.
--
This message was sent by Atlassian JIRA
(v6.2#6252)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]