繁体   English   中英

将Log4j JMSAppender与ActiveMQ结合使用-调试级别的有线格式超时(客户端)

[英]Using log4j JMSAppender with ActiveMQ - wire format timeout in debug level (client side)

我正在尝试使用log4j JMSappender和ActiveMQ进行POC。 我成功地遵循了此示例-> http://activemq.apache.org/how-do-i-use-log4j-jms-appender-with-activemq.html

但这是针对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:ERROR激活名为[jms]的附加程序选项时出错。 javax.jms.JMSException:有线格式协商超时:对等方未发送其有线格式。 在org.apache.activemq.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),位于org.apache.log4j.net.JMSAppender.activateOptions(位于org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)的JMSAppender.java:218)(位于org.apache.log4j的org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)的JMSAppender.java:218) org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)上的org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:842)上的.config.PropertySetter.setProperties(PropertySetter.java:104) apache.log4j.PropertyConfigurator.configureRootCategory(PropertyC org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)上的onfigurator.java:648)org.apache.log4j.helpers.OptionConverter上的org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)上的org.apache.log4j.LogManager上的.selectAndConfigure(OptionConverter.java:526).org.ap4.log4j.Logger.getLogger(Logger.java:117)上的.selectAndConfigure(LogManager.java:127)在awg.adb.producer.ProducerDebug上。(ProducerDebug.java:13)位于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)在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

是的,这是由于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 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM