Perhaps you also want to add this to the LogManager.shutdown() methods, since I imagine that's what people will actually use/look at.
Sent from my iPhone > On 2016/01/27, at 18:20, Mikael Ståldal <[email protected]> wrote: > > OK, done. > >> On Wed, Jan 27, 2016 at 6:17 AM, Remko Popma <[email protected]> wrote: >> Mikael, feel free to update the javadoc when you have time. >> >> >>> On Wednesday, 27 January 2016, Remko Popma <[email protected]> wrote: >>> Since the async loggers and appenders will wait until their queue has been >>> cleared by the background thread, it is a blocking call. >>> >>> We should probably add a sentence to the java doc to clarify this. >>> >>> Sent from my iPhone >>> >>>> On 2016/01/26, at 18:15, Mikael Ståldal <[email protected]> wrote: >>>> >>>> I think that we should be clear, in Javadoc, about whether this new method >>>> is synchronous/blocking or not. >>>> >>>> (I could say the same about quite a few existing methods as well, but >>>> let's at least start to be clear about new methods from now.) >>>> >>>>> On Tue, Jan 26, 2016 at 1:31 AM, Matt Sicker <[email protected]> wrote: >>>>> I like it! >>>>> >>>>>> On 25 January 2016 at 18:23, Ralph Goers <[email protected]> >>>>>> wrote: >>>>>> Then the method name would be terminate? I could live with that. I >>>>>> also like the fact that when something goes wrong with it then it would >>>>>> be interminable ;-) >>>>>> >>>>>> Ralph >>>>>> >>>>>>> On Jan 25, 2016, at 5:18 PM, Matt Sicker <[email protected]> wrote: >>>>>>> >>>>>>> How about Terminable? It's even a real word to boot. >>>>>>> >>>>>>> On 25 January 2016 at 18:15, Ralph Goers <[email protected]> >>>>>>> wrote: >>>>>>>> Yes, well - Serializable actually sounds like it should be a real >>>>>>>> word. Shutdownable doesn’t - in fact, my mail editor just split it >>>>>>>> into two words to “help” me. I take a different view. A class that >>>>>>>> declares it implements an interface isn’t “capable” of anything - it >>>>>>>> just implements the interface. The interface name is what tells you >>>>>>>> that the implementing class is able to do something, which is why you >>>>>>>> have Comparable instead of just Compare, Cloneable instead of just >>>>>>>> Clone, or Closeable instead of just Close. Would you want Stop >>>>>>>> instead of Stoppable? I view “able” as just a shorthand way of saying >>>>>>>> “Capable”, but unfortunately that just doesn’t sound right with >>>>>>>> Shutdown (at least to me). >>>>>>>> >>>>>>>> Here are some “able” alternatives - presumably each would have a >>>>>>>> corresponding method name instead of shutdown: >>>>>>>> Terminateable. >>>>>>>> Completeable. >>>>>>>> Concludeable. >>>>>>>> Haltable. >>>>>>>> Dismissable. >>>>>>>> Expireable. >>>>>>>> >>>>>>>> I suppose we could also use Stoppable but that seems odd since stop is >>>>>>>> part of Lifecycle. >>>>>>>> >>>>>>>> Got a preference? >>>>>>>> >>>>>>>> Ralph >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> On Jan 25, 2016, at 4:35 PM, Gary Gregory <[email protected]> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>> I see some interfaces with "*Capable*" in the name here and there in >>>>>>>>> the FOSS world (but not in the JRE) so I am a little more comfortable >>>>>>>>> with it. >>>>>>>>> >>>>>>>>> I still see plain old "Shutdown" as simpler. >>>>>>>>> >>>>>>>>> I think I've boiled down my feel for this name to the fact that the >>>>>>>>> Capable postfix is redundant since a class implementing any interface >>>>>>>>> is "capable" of that functionality. IOW we have Serializable vs. >>>>>>>>> SerializationCabable, which means the same thing. >>>>>>>>> >>>>>>>>> Gary >>>>>>>>> >>>>>>>>>> On Mon, Jan 25, 2016 at 7:27 AM, Ralph Goers >>>>>>>>>> <[email protected]> wrote: >>>>>>>>>> What does it feel weird to you? To be honest, I originally named >>>>>>>>>> the interface ‘Shutdown” and then changed it since it really is >>>>>>>>>> about implementing a behavior and “Shutdown” alone doesn’t really >>>>>>>>>> describe that. >>>>>>>>>> >>>>>>>>>> Ralph >>>>>>>>>> >>>>>>>>>>> On Jan 24, 2016, at 11:09 PM, Gary Gregory <[email protected]> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>>> On Sun, Jan 24, 2016 at 10:07 PM, Gary Gregory >>>>>>>>>>>> <[email protected]> wrote: >>>>>>>>>>>>> On Sun, Jan 24, 2016 at 1:54 PM, Ralph Goers >>>>>>>>>>>>> <[email protected]> wrote: >>>>>>>>>>>>> Yes, Shutdownable is too weird. >>>>>>>>>>>> >>>>>>>>>>>> How about calling it simply "Shutdown" then? FooCapable feels >>>>>>>>>>>> weird to me. >>>>>>>>>>>> >>>>>>>>>>>> Can anyone think of other (one-method or not) optional >>>>>>>>>>>> feature-like interfaces in the JRE or other code base? >>>>>>>>>>> >>>>>>>>>>> hm... ShutdownService? >>>>>>>>>>> >>>>>>>>>>> Gary >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Gary >>>>>>>>>>>> >>>>>>>>>>>>> Closeable would imply there is a close method, not a shutdown >>>>>>>>>>>>> method. I have my doubts about the try-with-resources use case >>>>>>>>>>>>> here. Virtually all usages are probably going to be to disable >>>>>>>>>>>>> automatic shutdown and then the user placing the shutdown call >>>>>>>>>>>>> somewhere they can control, which probably will have nothing to >>>>>>>>>>>>> do with initialization of logging. >>>>>>>>>>>>> >>>>>>>>>>>>> Ralph >>>>>>>>>>>>> >>>>>>>>>>>>>> On Jan 24, 2016, at 2:43 PM, Gary Gregory >>>>>>>>>>>>>> <[email protected]> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> Resending, got a error from my phone... >>>>>>>>>>>>>> >>>>>>>>>>>>>> ---------- Forwarded message ---------- >>>>>>>>>>>>>> From: "Gary Gregory" <[email protected]> >>>>>>>>>>>>>> Date: Jan 24, 2016 1:41 PM >>>>>>>>>>>>>> Subject: Re: logging-log4j2 git commit: LOG4J2-124 - Add >>>>>>>>>>>>>> shutdown methods to LogManager >>>>>>>>>>>>>> To: <[email protected]> >>>>>>>>>>>>>> Cc: >>>>>>>>>>>>>> >>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Any reason not use the usual -able postfix instead of >>>>>>>>>>>>>> ShutdownCapable: Shutdownable sounds too weird? What about >>>>>>>>>>>>>> reusing plain old Closeable? That means you could use the >>>>>>>>>>>>>> context in a try-with-resources block, a bonus. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Gary >>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Jan 24, 2016 10:18 AM, <[email protected]> wrote: >>>>>>>>>>>>>>> Repository: logging-log4j2 >>>>>>>>>>>>>>> Updated Branches: >>>>>>>>>>>>>>> refs/heads/master 7d3aac4b9 -> 2df3f0e72 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> LOG4J2-124 - Add shutdown methods to LogManager >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Project: >>>>>>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo >>>>>>>>>>>>>>> Commit: >>>>>>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/2df3f0e7 >>>>>>>>>>>>>>> Tree: >>>>>>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/2df3f0e7 >>>>>>>>>>>>>>> Diff: >>>>>>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/2df3f0e7 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Branch: refs/heads/master >>>>>>>>>>>>>>> Commit: 2df3f0e7262c90e3fe1700f053eebf18491650d9 >>>>>>>>>>>>>>> Parents: 7d3aac4 >>>>>>>>>>>>>>> Author: Ralph Goers <[email protected]> >>>>>>>>>>>>>>> Authored: Sun Jan 24 11:18:41 2016 -0700 >>>>>>>>>>>>>>> Committer: Ralph Goers <[email protected]> >>>>>>>>>>>>>>> Committed: Sun Jan 24 11:18:41 2016 -0700 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> ---------------------------------------------------------------------- >>>>>>>>>>>>>>> .../org/apache/logging/log4j/LogManager.java | 62 >>>>>>>>>>>>>>> ++++++++++++++++++++ >>>>>>>>>>>>>>> .../logging/log4j/spi/ShutdownCapable.java | 17 ++++++ >>>>>>>>>>>>>>> .../apache/logging/log4j/LogManagerTest.java | 7 +++ >>>>>>>>>>>>>>> .../logging/log4j/core/LoggerContext.java | 8 ++- >>>>>>>>>>>>>>> 4 files changed, 93 insertions(+), 1 deletion(-) >>>>>>>>>>>>>>> ---------------------------------------------------------------------- >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2df3f0e7/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java >>>>>>>>>>>>>>> ---------------------------------------------------------------------- >>>>>>>>>>>>>>> diff --git >>>>>>>>>>>>>>> a/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> b/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java >>>>>>>>>>>>>>> index f10e5a8..64c6ee5 100644 >>>>>>>>>>>>>>> --- >>>>>>>>>>>>>>> a/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java >>>>>>>>>>>>>>> +++ >>>>>>>>>>>>>>> b/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java >>>>>>>>>>>>>>> @@ -27,6 +27,7 @@ import >>>>>>>>>>>>>>> org.apache.logging.log4j.simple.SimpleLoggerContextFactory; >>>>>>>>>>>>>>> import org.apache.logging.log4j.spi.LoggerContext; >>>>>>>>>>>>>>> import org.apache.logging.log4j.spi.LoggerContextFactory; >>>>>>>>>>>>>>> import org.apache.logging.log4j.spi.Provider; >>>>>>>>>>>>>>> +import org.apache.logging.log4j.spi.ShutdownCapable; >>>>>>>>>>>>>>> import org.apache.logging.log4j.status.StatusLogger; >>>>>>>>>>>>>>> import org.apache.logging.log4j.util.LoaderUtil; >>>>>>>>>>>>>>> import org.apache.logging.log4j.util.PropertiesUtil; >>>>>>>>>>>>>>> @@ -285,6 +286,67 @@ public class LogManager { >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> /** >>>>>>>>>>>>>>> + * Shutdown using the default LoggerContext. >>>>>>>>>>>>>>> + * @since 2.6 >>>>>>>>>>>>>>> + */ >>>>>>>>>>>>>>> + public static void shutdown() { >>>>>>>>>>>>>>> + shutdown(getContext()); >>>>>>>>>>>>>>> + } >>>>>>>>>>>>>>> + >>>>>>>>>>>>>>> + /** >>>>>>>>>>>>>>> + * Shutdown the logging system if the logging system >>>>>>>>>>>>>>> supports it. >>>>>>>>>>>>>>> + * @param currentContext if true the LoggerContext for the >>>>>>>>>>>>>>> caller of this method will be used. >>>>>>>>>>>>>>> + * @since 2.6 >>>>>>>>>>>>>>> + */ >>>>>>>>>>>>>>> + public static void shutdown(boolean currentContext) { >>>>>>>>>>>>>>> + shutdown(getContext(currentContext)); >>>>>>>>>>>>>>> + } >>>>>>>>>>>>>>> + >>>>>>>>>>>>>>> + /** >>>>>>>>>>>>>>> + * Shutdown the logging system if the logging system >>>>>>>>>>>>>>> supports it. >>>>>>>>>>>>>>> + * @param loader The ClassLoader for the context. If null >>>>>>>>>>>>>>> the context will attempt to determine the appropriate >>>>>>>>>>>>>>> + * ClassLoader. >>>>>>>>>>>>>>> + * @param currentContext if false the LoggerContext >>>>>>>>>>>>>>> appropriate for the caller of this method will be used. >>>>>>>>>>>>>>> + * @since 2.6 >>>>>>>>>>>>>>> + */ >>>>>>>>>>>>>>> + public static void shutdown(final ClassLoader loader, >>>>>>>>>>>>>>> final boolean currentContext) { >>>>>>>>>>>>>>> + shutdown(getContext(loader, currentContext)); >>>>>>>>>>>>>>> + } >>>>>>>>>>>>>>> + >>>>>>>>>>>>>>> + /** >>>>>>>>>>>>>>> + * Shutdown the logging system if the logging system >>>>>>>>>>>>>>> supports it. >>>>>>>>>>>>>>> + * @param context the LoggerContext. >>>>>>>>>>>>>>> + * @since 2.6 >>>>>>>>>>>>>>> + */ >>>>>>>>>>>>>>> + public static void shutdown(LoggerContext context) { >>>>>>>>>>>>>>> + if (context != null && context instanceof >>>>>>>>>>>>>>> ShutdownCapable) { >>>>>>>>>>>>>>> + ((ShutdownCapable) context).shutdown(); >>>>>>>>>>>>>>> + } >>>>>>>>>>>>>>> + } >>>>>>>>>>>>>>> + >>>>>>>>>>>>>>> + /** >>>>>>>>>>>>>>> + * Shutdown the logging system if the logging system >>>>>>>>>>>>>>> supports it. >>>>>>>>>>>>>>> + * @param fqcn The fully qualified class name of the Class >>>>>>>>>>>>>>> that this method is a member of. >>>>>>>>>>>>>>> + * @param currentContext if false the LoggerContext >>>>>>>>>>>>>>> appropriate for the caller of this method will be used. >>>>>>>>>>>>>>> + * @since 2.6 >>>>>>>>>>>>>>> + */ >>>>>>>>>>>>>>> + protected static void shutdown(final String fqcn, final >>>>>>>>>>>>>>> boolean currentContext) { >>>>>>>>>>>>>>> + shutdown(getContext(fqcn, currentContext)); >>>>>>>>>>>>>>> + } >>>>>>>>>>>>>>> + >>>>>>>>>>>>>>> + /** >>>>>>>>>>>>>>> + * Shutdown the logging system if the logging system >>>>>>>>>>>>>>> supports it. >>>>>>>>>>>>>>> + * @param fqcn The fully qualified class name of the Class >>>>>>>>>>>>>>> that this method is a member of. >>>>>>>>>>>>>>> + * @param loader The ClassLoader for the context. If null >>>>>>>>>>>>>>> the context will attempt to determine the appropriate >>>>>>>>>>>>>>> + * ClassLoader. >>>>>>>>>>>>>>> + * @param currentContext if false the LoggerContext >>>>>>>>>>>>>>> appropriate for the caller of this method will be used. >>>>>>>>>>>>>>> + * @since 2.6 >>>>>>>>>>>>>>> + */ >>>>>>>>>>>>>>> + protected static void shutdown(final String fqcn, final >>>>>>>>>>>>>>> ClassLoader loader, final boolean currentContext) { >>>>>>>>>>>>>>> + shutdown(getContext(fqcn, loader, currentContext)); >>>>>>>>>>>>>>> + } >>>>>>>>>>>>>>> + >>>>>>>>>>>>>>> + /** >>>>>>>>>>>>>>> * Returns the current LoggerContextFactory. >>>>>>>>>>>>>>> * >>>>>>>>>>>>>>> * @return The LoggerContextFactory. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2df3f0e7/log4j-api/src/main/java/org/apache/logging/log4j/spi/ShutdownCapable.java >>>>>>>>>>>>>>> ---------------------------------------------------------------------- >>>>>>>>>>>>>>> diff --git >>>>>>>>>>>>>>> a/log4j-api/src/main/java/org/apache/logging/log4j/spi/ShutdownCapable.java >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> b/log4j-api/src/main/java/org/apache/logging/log4j/spi/ShutdownCapable.java >>>>>>>>>>>>>>> new file mode 100644 >>>>>>>>>>>>>>> index 0000000..a46ef60 >>>>>>>>>>>>>>> --- /dev/null >>>>>>>>>>>>>>> +++ >>>>>>>>>>>>>>> b/log4j-api/src/main/java/org/apache/logging/log4j/spi/ShutdownCapable.java >>>>>>>>>>>>>>> @@ -0,0 +1,17 @@ >>>>>>>>>>>>>>> +/* >>>>>>>>>>>>>>> + * Copyright (c) 2016 Nextiva, Inc. to Present. >>>>>>>>>>>>>>> + * All rights reserved. >>>>>>>>>>>>>>> + */ >>>>>>>>>>>>>>> +package org.apache.logging.log4j.spi; >>>>>>>>>>>>>>> + >>>>>>>>>>>>>>> +/** >>>>>>>>>>>>>>> + * Interface to be implemented by LoggerContext's that provide >>>>>>>>>>>>>>> a shutdown method. >>>>>>>>>>>>>>> + * @since 2.6 >>>>>>>>>>>>>>> + */ >>>>>>>>>>>>>>> +public interface ShutdownCapable { >>>>>>>>>>>>>>> + >>>>>>>>>>>>>>> + /** >>>>>>>>>>>>>>> + * Requests that the logging implementation shut down. >>>>>>>>>>>>>>> + */ >>>>>>>>>>>>>>> + void shutdown(); >>>>>>>>>>>>>>> +} >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2df3f0e7/log4j-api/src/test/java/org/apache/logging/log4j/LogManagerTest.java >>>>>>>>>>>>>>> ---------------------------------------------------------------------- >>>>>>>>>>>>>>> diff --git >>>>>>>>>>>>>>> a/log4j-api/src/test/java/org/apache/logging/log4j/LogManagerTest.java >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> b/log4j-api/src/test/java/org/apache/logging/log4j/LogManagerTest.java >>>>>>>>>>>>>>> index 48f0eea..596a9f2 100644 >>>>>>>>>>>>>>> --- >>>>>>>>>>>>>>> a/log4j-api/src/test/java/org/apache/logging/log4j/LogManagerTest.java >>>>>>>>>>>>>>> +++ >>>>>>>>>>>>>>> b/log4j-api/src/test/java/org/apache/logging/log4j/LogManagerTest.java >>>>>>>>>>>>>>> @@ -17,6 +17,7 @@ >>>>>>>>>>>>>>> package org.apache.logging.log4j; >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> import >>>>>>>>>>>>>>> org.apache.logging.log4j.message.ParameterizedMessageFactory; >>>>>>>>>>>>>>> +import org.apache.logging.log4j.spi.LoggerContext; >>>>>>>>>>>>>>> import org.junit.Test; >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> import static org.junit.Assert.*; >>>>>>>>>>>>>>> @@ -53,4 +54,10 @@ public class LogManagerTest { >>>>>>>>>>>>>>> assertNotNull("No Logger returned", logger); >>>>>>>>>>>>>>> assertTrue("Incorrect Logger name: " + >>>>>>>>>>>>>>> logger.getName(),LogManagerTest.class.getName().equals(logger.getName())); >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> + >>>>>>>>>>>>>>> + @Test >>>>>>>>>>>>>>> + public void testShutdown() { >>>>>>>>>>>>>>> + LoggerContext loggerContext = >>>>>>>>>>>>>>> LogManager.getContext(false); >>>>>>>>>>>>>>> + LogManager.shutdown(loggerContext); >>>>>>>>>>>>>>> + } >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2df3f0e7/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java >>>>>>>>>>>>>>> ---------------------------------------------------------------------- >>>>>>>>>>>>>>> diff --git >>>>>>>>>>>>>>> a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java >>>>>>>>>>>>>>> index 42efbb5..fcdfc16 100644 >>>>>>>>>>>>>>> --- >>>>>>>>>>>>>>> a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java >>>>>>>>>>>>>>> +++ >>>>>>>>>>>>>>> b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java >>>>>>>>>>>>>>> @@ -45,6 +45,7 @@ import >>>>>>>>>>>>>>> org.apache.logging.log4j.message.MessageFactory; >>>>>>>>>>>>>>> import org.apache.logging.log4j.spi.AbstractLogger; >>>>>>>>>>>>>>> import org.apache.logging.log4j.spi.LoggerContextFactory; >>>>>>>>>>>>>>> import org.apache.logging.log4j.spi.LoggerContextKey; >>>>>>>>>>>>>>> +import org.apache.logging.log4j.spi.ShutdownCapable; >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> import static >>>>>>>>>>>>>>> org.apache.logging.log4j.core.util.ShutdownCallbackRegistry.*; >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> @@ -54,7 +55,7 @@ import static >>>>>>>>>>>>>>> org.apache.logging.log4j.core.util.ShutdownCallbackRegistry.*; >>>>>>>>>>>>>>> * filters, etc and will be atomically updated whenever a >>>>>>>>>>>>>>> reconfigure occurs. >>>>>>>>>>>>>>> */ >>>>>>>>>>>>>>> public class LoggerContext extends AbstractLifeCycle >>>>>>>>>>>>>>> implements org.apache.logging.log4j.spi.LoggerContext, >>>>>>>>>>>>>>> - ConfigurationListener { >>>>>>>>>>>>>>> + ShutdownCapable, ConfigurationListener { >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> /** >>>>>>>>>>>>>>> * Property name of the property change event fired if the >>>>>>>>>>>>>>> configuration is changed. >>>>>>>>>>>>>>> @@ -278,6 +279,11 @@ public class LoggerContext extends >>>>>>>>>>>>>>> AbstractLifeCycle implements org.apache.loggi >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> @Override >>>>>>>>>>>>>>> + public void shutdown() { >>>>>>>>>>>>>>> + stop(); >>>>>>>>>>>>>>> + } >>>>>>>>>>>>>>> + >>>>>>>>>>>>>>> + @Override >>>>>>>>>>>>>>> public void stop() { >>>>>>>>>>>>>>> LOGGER.debug("Stopping LoggerContext[name={}, {}]...", >>>>>>>>>>>>>>> getName(), this); >>>>>>>>>>>>>>> configLock.lock(); >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> E-Mail: [email protected] | [email protected] >>>>>>>>>>>> Java Persistence with Hibernate, Second Edition >>>>>>>>>>>> JUnit in Action, Second Edition >>>>>>>>>>>> Spring Batch in Action >>>>>>>>>>>> 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 >>>>>>>>>>> JUnit in Action, Second Edition >>>>>>>>>>> Spring Batch in Action >>>>>>>>>>> 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 >>>>>>>>> JUnit in Action, Second Edition >>>>>>>>> Spring Batch in Action >>>>>>>>> Blog: http://garygregory.wordpress.com >>>>>>>>> Home: http://garygregory.com/ >>>>>>>>> Tweet! http://twitter.com/GaryGregory >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Matt Sicker <[email protected]> >>>>> >>>>> >>>>> >>>>> -- >>>>> Matt Sicker <[email protected]> >>>> >>>> >>>> >>>> -- >>>> >>>> >>>> Mikael Ståldal >>>> Senior software developer >>>> >>>> Magine TV >>>> [email protected] >>>> Grev Turegatan 3 | 114 46 Stockholm, Sweden | www.magine.com >>>> >>>> Privileged and/or Confidential Information may be contained in this >>>> message. If you are not the addressee indicated in this message >>>> (or responsible for delivery of the message to such a person), you may not >>>> copy or deliver this message to anyone. In such case, >>>> you should destroy this message and kindly notify the sender by reply >>>> email. > > > > -- > > > Mikael Ståldal > Senior software developer > > Magine TV > [email protected] > Grev Turegatan 3 | 114 46 Stockholm, Sweden | www.magine.com > > Privileged and/or Confidential Information may be contained in this message. > If you are not the addressee indicated in this message > (or responsible for delivery of the message to such a person), you may not > copy or deliver this message to anyone. In such case, > you should destroy this message and kindly notify the sender by reply email. >
