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 >
