Hello,

I am trying to create a logging solution using JMSAppender.  The
JMSAppender is working great and is really a great tool to have.
The issue I have is when I restart the JMS broker, the logger fails to
reconnect to the broker.  Is there somthing I am missing that can have the
logger reconnect to the JMS broker?

Technologies: mulesoft ESB, Apache ActiveMQ

My application log after JMS restart:

2017-01-04 09:24:00,949 Log4j2-AsyncLoggerConfig-182 ERROR An exception
occurred processing Appender jmsQueue org.apache.logging.lo
g4j.core.appender.AppenderLoggingException:
javax.jms.IllegalStateException: The Session is closed
       at
org.apache.logging.log4j.core.appender.mom.JmsAppender.append(JmsAppender.java:66)

       at
org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:152)

       at
org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:125)

       at
org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:116)

       at
org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)

       at
org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:390)

       at
org.apache.logging.log4j.core.async.AsyncLoggerConfig.asyncCallAppenders(AsyncLoggerConfig.java:103)

       at
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler.onEvent(AsyncLoggerConfigDisrupt
or.java:90)
       at
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler.onEvent(AsyncLoggerConfigDisrupt
or.java:76)
       at
com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:128)
       at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

       at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

       at java.lang.Thread.run(Thread.java:745)
Caused by: javax.jms.IllegalStateException: The Session is closed
       at
org.apache.activemq.ActiveMQSession.checkClosed(ActiveMQSession.java:771)
       at
org.apache.activemq.ActiveMQSession.configureMessage(ActiveMQSession.java:759)

       at
org.apache.activemq.ActiveMQSession.createTextMessage(ActiveMQSession.java:440)

       at
org.apache.logging.log4j.core.appender.mom.JmsManager.createMessage(JmsManager.java:120)

       at
org.apache.logging.log4j.core.appender.mom.JmsAppender.append(JmsAppender.java:62)

       ... 12 more



My Log4J2.xml properties file:

<JMS name="jmsQueue"
destinationBindingName="dev.logging"
factoryName="org.apache.activemq.jndi.ActiveMQInitialContextFactory"
factoryBindingName="ConnectionFactory"
providerURL="tcp://<url>:61616?initialReconnectDelay=10000,maxReconnectAttempts=10"
userName="log"
password="log">
<PatternLayout pattern='{"type":"integration", "app":"logtest",
"env":"dev", "date":"%d{ISO8601}", "thread":"[%t]", "loglevel":"%-5p",
"message":"%c - %m"}'/>
</JMS>



Thank you for your time.
Paul

Reply via email to