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
