logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Gregory <garydgreg...@gmail.com>
Subject Re: ShutdownCallbackRegsitry instance getter?
Date Mon, 22 Jun 2015 21:41:37 GMT
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