Author: chirino
Date: Thu Nov 8 18:13:20 2012
New Revision: 1407200
URL: http://svn.apache.org/viewvc?rev=1407200&view=rev
Log:
Protect against appending recursion (In case your JMS provider appends to log4j
in the process of sending a JMS message).
Modified:
activemq/trunk/activemq-log4j-appender/src/main/java/org/apache/activemq/util/JmsLogAppenderSupport.java
Modified:
activemq/trunk/activemq-log4j-appender/src/main/java/org/apache/activemq/util/JmsLogAppenderSupport.java
URL:
http://svn.apache.org/viewvc/activemq/trunk/activemq-log4j-appender/src/main/java/org/apache/activemq/util/JmsLogAppenderSupport.java?rev=1407200&r1=1407199&r2=1407200&view=diff
==============================================================================
---
activemq/trunk/activemq-log4j-appender/src/main/java/org/apache/activemq/util/JmsLogAppenderSupport.java
(original)
+++
activemq/trunk/activemq-log4j-appender/src/main/java/org/apache/activemq/util/JmsLogAppenderSupport.java
Thu Nov 8 18:13:20 2012
@@ -137,13 +137,20 @@ public abstract class JmsLogAppenderSupp
return getSession().createProducer(null);
}
+ private static final ThreadLocal<Object> APPENDING = new
ThreadLocal<Object>();
+
protected void append(LoggingEvent event) {
- try {
- Message message = createMessage(event);
- Destination destination = getDestination(event);
- getProducer().send(destination, message);
- } catch (Exception e) {
- getErrorHandler().error("Could not send message due to: " + e, e,
JMS_PUBLISH_ERROR_CODE, event);
+ if( APPENDING.get()==null ) {
+ APPENDING.set(true);
+ try {
+ Message message = createMessage(event);
+ Destination destination = getDestination(event);
+ getProducer().send(destination, message);
+ } catch (Exception e) {
+ getErrorHandler().error("Could not send message due to: " + e,
e, JMS_PUBLISH_ERROR_CODE, event);
+ } finally {
+ APPENDING.remove();
+ }
}
}