logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Charles Allen <charles.al...@metamarkets.com>
Subject Re: ShutdownCallbackRegsitry instance getter?
Date Mon, 22 Jun 2015 22:33:51 GMT
Filed https://issues.apache.org/jira/browse/LOG4J2-1066



On Mon, Jun 22, 2015 at 2:42 PM Gary Gregory <garydgregory@gmail.com> wrote:

> YW Charles. Can you create a JIRA that describes your use case? This way
> we can keep trace of it and the current solution and make a note of it in
> the release notes for the upcoming 2.4.
>
> Gary
>
> On Mon, Jun 22, 2015 at 2:31 PM, Charles Allen <
> charles.allen@metamarkets.com> wrote:
>
>> Thanks Gary!
>>
>> On Mon, Jun 22, 2015 at 1:54 PM Gary Gregory <garydgregory@gmail.com>
>> wrote:
>>
>>> FYI: The getter in is Git master now.
>>>
>>> On Mon, Jun 22, 2015 at 1:50 PM, Gary Gregory <garydgregory@gmail.com>
>>> wrote:
>>>
>>>> I'd like to hear from Ralph and/or Remko on this. I'll add the getter
>>>> anyway. It seems to me that if you pass in the object in a ctor and it is
>>>> set in an ivar, it should be accessible via a getter.
>>>>
>>>> Gary
>>>>
>>>>
>>>> On Mon, Jun 22, 2015 at 1:42 PM, Charles Allen <
>>>> charles.allen@metamarkets.com> wrote:
>>>>
>>>>> That indeed would be one solution for my use case.
>>>>>
>>>>> If there is some other recommended method (like programmatically
>>>>> create the context factory and not let auto-creation do it) that is "more
>>>>> preferred" than simply having a getter on the factory then I would love
to
>>>>> know about it.
>>>>>
>>>>> On Mon, Jun 22, 2015 at 1:34 PM Gary Gregory <garydgregory@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> On Mon, Jun 22, 2015 at 12:44 PM, Charles Allen <
>>>>>> charles.allen@metamarkets.com> wrote:
>>>>>>
>>>>>>> org.apache.logging.log4j.core.impl.Log4jContextFactory#createShutdownCallbackRegistry
>>>>>>> creates the instance of interest, but the resulting instance
is not
>>>>>>> get-able without using reflection?
>>>>>>>
>>>>>>
>>>>>>  That's true, createShutdownCallbackRegistry is called from
>>>>>> Log4jContextFactory constructions and not accessible from outside
the class.
>>>>>>
>>>>>> You'd like a
>>>>>>
>>>>>> public ShutdownCallbackRegistry getShutdownCallbackRegistry() {
>>>>>> return shutdownCallbackRegistry;
>>>>>> }
>>>>>>
>>>>>>
>>>>>> added to this class?
>>>>>>
>>>>>> Gary
>>>>>>
>>>>>>
>>>>>>> On Mon, Jun 22, 2015 at 12:36 PM Charles Allen <
>>>>>>> charles.allen@metamarkets.com> wrote:
>>>>>>>
>>>>>>>> No, it is still not showing up. For the record, this is using
2.2
>>>>>>>> Which seems odd because if I break on Log4jContextFactory.java:88
>>>>>>>> then the shutdownCallbackRegistry is the correct custom instance
if the
>>>>>>>> properties are set programmatically or at command line, but
it simply does
>>>>>>>> not print out the debug message
>>>>>>>>
>>>>>>>>
>>>>>>>> On Mon, Jun 22, 2015 at 12:11 PM Gary Gregory <
>>>>>>>> garydgregory@gmail.com> wrote:
>>>>>>>>
>>>>>>>>> If you do not see the message "Using ShutdownCallbackRegistry
>>>>>>>>> YOUR_CLASS_INSTANCE" then that is not good.
>>>>>>>>>
>>>>>>>>> Can you try setting the system properties from the command
line
>>>>>>>>> instead of programmatically? I wonder if Log4j is initialized
_before_ your
>>>>>>>>> setProperty calls.
>>>>>>>>>
>>>>>>>>> Gary
>>>>>>>>>
>>>>>>>>> On Mon, Jun 22, 2015 at 11:37 AM, Charles Allen <
>>>>>>>>> charles.allen@metamarkets.com> wrote:
>>>>>>>>>
>>>>>>>>>> No, oddly enough.
>>>>>>>>>>
>>>>>>>>>> The following options are being set:
>>>>>>>>>>
>>>>>>>>>> properties.setProperty("log4j.shutdownCallbackRegistry",
"io.druid.common.config.Log4jShutdown");
>>>>>>>>>> properties.setProperty("log4j.shutdownHookEnabled",
"true");
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> I know it is getting called though and I have the
following at
>>>>>>>>>> the start and end of my log when my main program:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> 2015-06-22 18:32:38,543 INFO Registered Log4j as
the
>>>>>>>>>> java.util.logging.LogManager.
>>>>>>>>>> 2015-06-22 18:32:38,698 DEBUG Registering MBean
>>>>>>>>>> org.apache.logging.log4j2:type=1793467229
>>>>>>>>>> 2015-06-22 18:32:38,705 DEBUG Registering MBean
>>>>>>>>>> org.apache.logging.log4j2:type=1793467229,component=StatusLogger
>>>>>>>>>> 2015-06-22 18:32:38,707 DEBUG Registering MBean
>>>>>>>>>> org.apache.logging.log4j2:type=1793467229,component=ContextSelector
>>>>>>>>>> 2015-06-22 18:32:38,710 DEBUG Registering MBean
>>>>>>>>>> org.apache.logging.log4j2:type=1793467229,component=Loggers,name=
>>>>>>>>>> 2015-06-22 18:32:38,713 DEBUG Registering MBean
>>>>>>>>>> org.apache.logging.log4j2:type=1793467229,component=Appenders,name=Console
>>>>>>>>>> 2015-06-22 18:32:38,714 DEBUG Reconfiguration complete
for
>>>>>>>>>> context[name=1793467229] at null
>>>>>>>>>> (org.apache.logging.log4j.core.LoggerContext@6bfecf32)
with
>>>>>>>>>> optional ClassLoader: null
>>>>>>>>>> 2015-06-22 18:32:38,714 DEBUG Shutdown hook enabled.
Registering
>>>>>>>>>> a new one.
>>>>>>>>>> 2015-06-22 18:32:38,716 DEBUG LoggerContext[name=1793467229,
>>>>>>>>>> org.apache.logging.log4j.core.LoggerContext@6bfecf32]
started OK.
>>>>>>>>>> 2015-06-22 18:32:40,327 DEBUG Using default SystemClock
for
>>>>>>>>>> timestamps
>>>>>>>>>>
>>>>>>>>>> ......
>>>>>>>>>>
>>>>>>>>>> 2015-06-22T18:33:28,999 INFO [Thread-52]
>>>>>>>>>> io.druid.initialization.Log4jShutterDownerModule
- Shutting down log4j
>>>>>>>>>> callbacks
>>>>>>>>>> 2015-06-22 18:33:29,000 DEBUG Stopping
>>>>>>>>>> LoggerContext[name=1793467229,
>>>>>>>>>> org.apache.logging.log4j.core.LoggerContext@6bfecf32]
>>>>>>>>>> 2015-06-22 18:33:29,000 DEBUG Stopping
>>>>>>>>>> LoggerContext[name=1793467229,
>>>>>>>>>> org.apache.logging.log4j.core.LoggerContext@6bfecf32]...
>>>>>>>>>> 2015-06-22 18:33:29,000 DEBUG Unregistering MBean
>>>>>>>>>> org.apache.logging.log4j2:type=1793467229
>>>>>>>>>> 2015-06-22 18:33:29,001 DEBUG Unregistering MBean
>>>>>>>>>> org.apache.logging.log4j2:type=1793467229,component=StatusLogger
>>>>>>>>>> 2015-06-22 18:33:29,001 DEBUG Unregistering MBean
>>>>>>>>>> org.apache.logging.log4j2:type=1793467229,component=ContextSelector
>>>>>>>>>> 2015-06-22 18:33:29,001 DEBUG Unregistering MBean
>>>>>>>>>> org.apache.logging.log4j2:type=1793467229,component=Loggers,name=
>>>>>>>>>> 2015-06-22 18:33:29,002 DEBUG Unregistering MBean
>>>>>>>>>> org.apache.logging.log4j2:type=1793467229,component=Appenders,name=Console
>>>>>>>>>> 2015-06-22 18:33:29,003 DEBUG Stopped
>>>>>>>>>> XmlConfiguration[location=/Users/charlesallen/src/druid/common/target/classes/log4j2.xml]
>>>>>>>>>> OK
>>>>>>>>>> 2015-06-22 18:33:29,004 DEBUG Stopped
>>>>>>>>>> LoggerContext[name=1793467229,
>>>>>>>>>> org.apache.logging.log4j.core.LoggerContext@6bfecf32]...
>>>>>>>>>> 2015-06-22 18:33:29,004 DEBUG Stopping
>>>>>>>>>> LoggerContext[name=Default,
>>>>>>>>>> org.apache.logging.log4j.core.LoggerContext@dbef480]
>>>>>>>>>> 2015-06-22 18:33:29,004 DEBUG Stopping
>>>>>>>>>> LoggerContext[name=Default,
>>>>>>>>>> org.apache.logging.log4j.core.LoggerContext@dbef480]...
>>>>>>>>>> 2015-06-22 18:33:29,005 DEBUG Stopped
>>>>>>>>>> XmlConfiguration[location=/Users/charlesallen/src/druid/common/target/classes/log4j2.xml]
>>>>>>>>>> OK
>>>>>>>>>> 2015-06-22 18:33:29,005 DEBUG Stopped LoggerContext[name=Default,
>>>>>>>>>> org.apache.logging.log4j.core.LoggerContext@dbef480]...
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Sat, Jun 20, 2015 at 9:04 AM Gary Gregory <
>>>>>>>>>> garydgregory@gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> If you turn on the Log4j status logger (<Configuration
status=
>>>>>>>>>>> "DEBUG">), do you see the debug log message
>>>>>>>>>>> from org.apache.logging.log4j.core.impl.Log4jContextFactory.Log4jContextFactory(ContextSelector,
>>>>>>>>>>> ShutdownCallbackRegistry):
>>>>>>>>>>>
>>>>>>>>>>> Using ShutdownCallbackRegistry YOUR_CLASS_INSTANCE
>>>>>>>>>>>
>>>>>>>>>>> Or do you see an exception logged
>>>>>>>>>>> from org.apache.logging.log4j.core.impl.Log4jContextFactory.createShutdownCallbackRegistry()?
>>>>>>>>>>>
>>>>>>>>>>> Gary
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Jun 17, 2015 at 9:13 AM, Charles Allen
<
>>>>>>>>>>> charles.allen@metamarkets.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> I'm currently writing a lifecycle bridge
between Druid.io's
>>>>>>>>>>>> logging and log4j2's logging to make sure
logs during normal shutdown hooks
>>>>>>>>>>>> are persisted correctly. I cannot rely on
JVM shutdown hook firing order
>>>>>>>>>>>> but have a "functional" ShutdownCallbackRegistry.
>>>>>>>>>>>>
>>>>>>>>>>>> Is there a preferred way to get the instanced
>>>>>>>>>>>> ShutdownCallbackRegistry at org.apache.logging.log4j.core.
>>>>>>>>>>>> impl.Log4jContextFactory#shutdownCallbackRegistry
?
>>>>>>>>>>>>
>>>>>>>>>>>> I have set a class via the log4j.shutdownCallbackRegistry
>>>>>>>>>>>> property, but cannot seem to actually get
the instance used. This leaves me
>>>>>>>>>>>> to either use reflection
>>>>>>>>>>>> https://github.com/druid-io/druid/pull/1387
 or static methods
>>>>>>>>>>>> https://github.com/DjDCH/Log4j-StaticShutdown
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> E-Mail: garydgregory@gmail.com | ggregory@apache.org
>>>>>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>>>>>> <http://www.manning.com/bauer3/>
>>>>>>>>>>> JUnit in Action, Second Edition
>>>>>>>>>>> <http://www.manning.com/tahchiev/>
>>>>>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>>>>>>> Blog: http://garygregory.wordpress.com
>>>>>>>>>>> Home: http://garygregory.com/
>>>>>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> E-Mail: garydgregory@gmail.com | ggregory@apache.org
>>>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>>>> <http://www.manning.com/bauer3/>
>>>>>>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>>>>> Blog: http://garygregory.wordpress.com
>>>>>>>>> Home: http://garygregory.com/
>>>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> E-Mail: garydgregory@gmail.com | ggregory@apache.org
>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>> <http://www.manning.com/bauer3/>
>>>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>> Blog: http://garygregory.wordpress.com
>>>>>> Home: http://garygregory.com/
>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> E-Mail: garydgregory@gmail.com | ggregory@apache.org
>>>> Java Persistence with Hibernate, Second Edition
>>>> <http://www.manning.com/bauer3/>
>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>> Blog: http://garygregory.wordpress.com
>>>> Home: http://garygregory.com/
>>>> Tweet! http://twitter.com/GaryGregory
>>>>
>>>
>>>
>>>
>>> --
>>> E-Mail: garydgregory@gmail.com | ggregory@apache.org
>>> Java Persistence with Hibernate, Second Edition
>>> <http://www.manning.com/bauer3/>
>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>> Spring Batch in Action <http://www.manning.com/templier/>
>>> Blog: http://garygregory.wordpress.com
>>> Home: http://garygregory.com/
>>> Tweet! http://twitter.com/GaryGregory
>>>
>>
>
>
> --
> E-Mail: garydgregory@gmail.com | ggregory@apache.org
> Java Persistence with Hibernate, Second Edition
> <http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
>

Mime
View raw message