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 <garydgreg...@gmail.com> wrote: > On Mon, Jun 22, 2015 at 12:44 PM, Charles Allen < > charles.al...@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.al...@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 <garydgreg...@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.al...@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 <garydgreg...@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.al...@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: garydgreg...@gmail.com | ggreg...@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: garydgreg...@gmail.com | ggreg...@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: garydgreg...@gmail.com | ggreg...@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 >