You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rg...@apache.org on 2013/04/30 05:48:13 UTC
svn commit: r1477462 - in /logging/log4j/log4j2/trunk:
core/src/main/java/org/apache/logging/log4j/core/async/
core/src/main/java/org/apache/logging/log4j/core/config/
samples/flume-common/src/main/java/org/apache/logging/log4j/samples/app/
src/changes/
Author: rgoers
Date: Tue Apr 30 03:48:13 2013
New Revision: 1477462
URL: http://svn.apache.org/r1477462
Log:
LOG4J2-222 - Disruptor will now shutdown during Tomcat shutdown.
Modified:
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigHelper.java
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/XMLConfiguration.java
logging/log4j/log4j2/trunk/samples/flume-common/src/main/java/org/apache/logging/log4j/samples/app/LoggingController.java
logging/log4j/log4j2/trunk/src/changes/changes.xml
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java?rev=1477462&r1=1477461&r2=1477462&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java Tue Apr 30 03:48:13 2013
@@ -80,7 +80,7 @@ public class AsyncLoggerConfig extends L
/**
* Constructor that sets the name, level and additive values.
- *
+ *
* @param name The Logger name.
* @param level The Level.
* @param additive true if the Logger is additive, false otherwise.
@@ -128,19 +128,19 @@ public class AsyncLoggerConfig extends L
@Override
public void stopFilter() {
- // only stop disruptor if shutting down logging subsystem
+ /* only stop disruptor if shutting down logging subsystem
if (LogManager.getContext() instanceof LoggerContext) {
if (((LoggerContext) LogManager.getContext()).getStatus() != Status.STOPPING) {
return;
}
- }
+ } */
helper.shutdown();
super.stopFilter();
}
/**
* Factory method to create a LoggerConfig.
- *
+ *
* @param additivity True if additive, false otherwise.
* @param levelName The Level to be associated with the Logger.
* @param loggerName The name of the Logger.
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigHelper.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigHelper.java?rev=1477462&r1=1477461&r2=1477462&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigHelper.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigHelper.java Tue Apr 30 03:48:13 2013
@@ -63,8 +63,9 @@ class AsyncLoggerConfigHelper {
private static final Logger LOGGER = StatusLogger.getLogger();
private static volatile Disruptor<RingBufferLog4jEvent> disruptor;
- private static ExecutorService executor = Executors
- .newSingleThreadExecutor();
+ private static ExecutorService executor = Executors.newSingleThreadExecutor();
+
+ private static volatile int count = 0;
/**
* Factory used to populate the RingBuffer with events. These event objects
@@ -97,6 +98,7 @@ class AsyncLoggerConfigHelper {
}
private static synchronized void initDisruptor() {
+ ++count;
if (disruptor != null) {
return;
}
@@ -213,7 +215,10 @@ class AsyncLoggerConfigHelper {
}
}
- public void shutdown() {
+ public synchronized void shutdown() {
+ if (--count > 0) {
+ return;
+ }
Disruptor<RingBufferLog4jEvent> temp = disruptor;
// Must guarantee that publishing to the RingBuffer has stopped
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java?rev=1477462&r1=1477461&r2=1477462&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java Tue Apr 30 03:48:13 2013
@@ -136,15 +136,16 @@ public class BaseConfiguration extends A
*/
@Override
public void stop() {
- for (final LoggerConfig logger : loggers.values()) {
- logger.clearAppenders();
- logger.stopFilter();
- }
// Stop the appenders in reverse order in case they still have activity.
final Appender[] array = appenders.values().toArray(new Appender[appenders.size()]);
for (int i = array.length - 1; i >= 0; --i) {
array[i].stop();
}
+ for (final LoggerConfig logger : loggers.values()) {
+ logger.clearAppenders();
+ logger.stopFilter();
+ }
+ root.stopFilter();
stopFilter();
}
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/XMLConfiguration.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/XMLConfiguration.java?rev=1477462&r1=1477461&r2=1477462&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/XMLConfiguration.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/XMLConfiguration.java Tue Apr 30 03:48:13 2013
@@ -226,6 +226,10 @@ public class XMLConfiguration extends Ba
@Override
public void setup() {
+ if (rootElement == null) {
+ LOGGER.error("No logging configuration");
+ return;
+ }
constructHierarchy(rootNode, rootElement);
if (status.size() > 0) {
for (final Status s : status) {
Modified: logging/log4j/log4j2/trunk/samples/flume-common/src/main/java/org/apache/logging/log4j/samples/app/LoggingController.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/samples/flume-common/src/main/java/org/apache/logging/log4j/samples/app/LoggingController.java?rev=1477462&r1=1477461&r2=1477462&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/samples/flume-common/src/main/java/org/apache/logging/log4j/samples/app/LoggingController.java (original)
+++ logging/log4j/log4j2/trunk/samples/flume-common/src/main/java/org/apache/logging/log4j/samples/app/LoggingController.java Tue Apr 30 03:48:13 2013
@@ -50,19 +50,6 @@ public class LoggingController {
private List<AuditEvent> events;
- public LoggingController() {
-
- ThreadContext.clear();
-
- RequestContext.setSessionId("session1234");
- RequestContext.setIpAddress("127.0.0.1");
- RequestContext.setClientId("02121");
- RequestContext.setProductName("IB");
- RequestContext.setProductVersion("4.18.1");
- RequestContext.setLocale("en_US");
- RequestContext.setRegion("prod");
- }
-
@RequestMapping(value = "/start.do", method = RequestMethod.GET)
public ModelAndView startLogging(
@RequestParam(value = "member", required = false, defaultValue = "fakemember") final String member,
@@ -80,6 +67,15 @@ public class LoggingController {
@Override
public void run() {
+ ThreadContext.clear();
+
+ RequestContext.setSessionId("session1234");
+ RequestContext.setIpAddress("127.0.0.1");
+ RequestContext.setClientId("02121");
+ RequestContext.setProductName("IB");
+ RequestContext.setProductVersion("4.18.1");
+ RequestContext.setLocale("en_US");
+ RequestContext.setRegion("prod");
while (generateLog) {
// Generate rand number between 1 to 10
final int rand = ran.nextInt(9) + 1;
@@ -110,6 +106,7 @@ public class LoggingController {
}
}
+ ThreadContext.cloneStack();
}
}).start();
Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1477462&r1=1477461&r2=1477462&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
+++ logging/log4j/log4j2/trunk/src/changes/changes.xml Tue Apr 30 03:48:13 2013
@@ -23,6 +23,9 @@
<body>
<release version="2.0-beta6" date="@TBD@" description="Bug fixes and enhancements">
+ <action issue="LOG4J2-222" dev="rgoers" type="fix">
+ Disruptor will now shutdown during Tomcat shutdown.
+ </action>
<action dev="rpopma" type="update">
Renamed AsynchAppender to AsyncAppender. Plugin name became Async (was Asynch).
</action>