Filed https://issues.apache.org/jira/browse/LOG4J2-1066
On Mon, Jun 22, 2015 at 2:42 PM Gary Gregory <[email protected]> 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 < > [email protected]> wrote: > >> Thanks Gary! >> >> On Mon, Jun 22, 2015 at 1:54 PM Gary Gregory <[email protected]> >> wrote: >> >>> FYI: The getter in is Git master now. >>> >>> On Mon, Jun 22, 2015 at 1:50 PM, Gary Gregory <[email protected]> >>> 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 < >>>> [email protected]> 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 <[email protected]> >>>>> wrote: >>>>> >>>>>> On Mon, Jun 22, 2015 at 12:44 PM, Charles Allen < >>>>>> [email protected]> 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 < >>>>>>> [email protected]> 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 < >>>>>>>> [email protected]> 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 < >>>>>>>>> [email protected]> 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 < >>>>>>>>>> [email protected]> 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 < >>>>>>>>>>> [email protected]> 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: [email protected] | [email protected] >>>>>>>>>>> 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: [email protected] | [email protected] >>>>>>>>> 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: [email protected] | [email protected] >>>>>> 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: [email protected] | [email protected] >>>> 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: [email protected] | [email protected] >>> 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: [email protected] | [email protected] > 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 >
