2017-01-17 180 views
0

我試圖使用log4j JMSappender和ActiveMQ進行POC。我成功地遵循這個例子 - >http://activemq.apache.org/how-do-i-use-log4j-jms-appender-with-activemq.html在ActiveMQ中使用log4j JMSAppender - 調試級別(客戶端)中的線路格式超時

但這是爲INFO級別。我做了一些修改,在DEBUG級別使用它,我的程序和activeMQ不能交換它們的線路格式。這裏是我的log4j(客戶端)

log4j.rootLogger=DEBUG, stdout, jms 
log4j.logger.org.apache.activemq=INFO, stdout 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d %-5p %c - %m%n 
log4j.appender.stdout.Threshold=INFO 

log4j.appender.jms=org.apache.log4j.net.JMSAppender 
log4j.appender.jms.InitialContextFactoryName=org.apache.activemq.jndi.ActiveMQInitialContextFactory 
log4j.appender.jms.ProviderURL=tcp://localhost:61616 
log4j.appender.jms.TopicBindingName=logTopic 
log4j.appender.jms.TopicConnectionFactoryBindingName=ConnectionFactory 
log4j.appender.jms.Threshold=DEBUG 

當運行我的客戶端時,我有電線格式錯誤。

生產者程序:

import org.apache.log4j.Logger; 

public class ProducerDebug { 

public static void main(String[] args) throws InterruptedException 
{ 
    new ProducerDebug(); 
} 

private ProducerDebug() throws InterruptedException { 
    Logger logger = Logger.getLogger(ProducerInfo.class); 

    while (true) 
    { 
     logger.debug("push DEBUG"); 
     logger.info("push INFO2"); 
     Thread.sleep(10000); 
    } 
} 
} 

和錯誤消息:

log4j的:錯誤錯誤而激活用於附加器命名項[JMS]。 javax.jms.JMSException:有線格式協商超時:對等沒有 發送他的有線格式。在 org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:72) 在 org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1412) 在 org.apache.activemq.ActiveMQConnection。 ensureConnectionInfoSent(ActiveMQConnection.java:1501) 在 org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:323) 在 org.apache.activemq.ActiveMQConnection.createTopicSession(ActiveMQConnection.java:1134) 在 有機.apache.log4j.net.JMSAppender.activateOptions(JMSAppender.java:218) at org.apache.log4j.config.PropertySetter.activate(PropertySetter。的java:307) 在 org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172) 在 org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104) 在 有機.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:842) 在 org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768) 在 org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java :648) at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514) at org.apache.log4j.PropertyCo nfigurator.doConfigure(PropertyConfigurator.java:580) 在 org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526) 在org.apache.log4j.LogManager。(LogManager.java:127)在 org.apache.log4j.Logger.getLogger(Logger.java:117)at awg.adb.producer.ProducerDebug。(ProducerDebug.java:13)at awg.adb.producer.ProducerDebug.main(ProducerDebug.java:9 )原因: java.io.IOException:有線格式協商超時:對方未發送 線路格式。在 org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:98) 在 org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68) 在 org.apache.activemq。 transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:81) at org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator。Java的:86) 在 org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1387) ...... 17多個

我嘗試了很多事情,我不明白爲什麼我有這樣的錯誤。

有關信息:我使用 - ActiveMQ的5.12.1 - Log4j的1.2.17

回答

0

是的,它是由於AMQ日誌如果級別爲調試,一種解決方案是反其道而行之這樣:

log4j.rootLogger=INFO, stdout 

## Be sure that ActiveMQ messages are not logged to 'jms' appender 
log4j.logger.org.apache=INFO, stdout 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d %-5p %c - %m%n 

## Configure 'jms' appender. You'll also need jndi.properties file in order to make it work 
log4j.appender.jms=org.apache.log4j.net.JMSAppender 
log4j.appender.jms.InitialContextFactoryName=org.apache.activemq.jndi.ActiveMQInitialContextFactory 
log4j.appender.jms.ProviderURL=tcp://localhost:61616 
log4j.appender.jms.TopicBindingName=logTopic 
log4j.appender.jms.TopicConnectionFactoryBindingName=ConnectionFactory 
log4j.appender.jms.Threshold=DEBUG 
log4j.logger.your.package=jms 
+0

感謝哈桑。我嘗試了你的例子,通過'log4j.logger.your.package = DEBUG,jms'改變'log4j.logger.your.package = jms',它的工作。 – ellirar