在调试级别(客户端)使用log4jJMSAppender和ActiveMQ-wire格式超时



我正在尝试使用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.util.JMSExceptionSupport.create(JMSExceptSupport.java:72)在org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1412)在org.apache.activemq.ActiveMQConnection.ensureConnectionInfoCent(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(JMSAppeder.java:218)在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)在org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfiguratr.java:842)在org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfiguratr.java:768)在org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfiguratr.java:648)在org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfiguratr.java:514)在org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfiguratr.java:580)在org.apache.log4j.helpers.OptionsConverter.selectAndConfigure(OptionConverter.java:526)网址:org.apache.log4j.LogManager.(LogManager.java:127)org.apache.log4j.Logger.getLogger(Logger.java:117)位于的awg.adb.producer.ProducerDebug.(ProducerDebug.java:13)awg.adb.producer.ProducerDebug.main(ProducerDebug.java:9)原因:java.io.io异常:有线格式协商超时:对等方未发送他的电报格式。在org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotinator.java:98)在org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)在org.apache.activemq.transport.ResponseCorrector.asyncRequest(ResponseCorrelator.java:81)在org.apache.activemq.transport.ResponseCorrector.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

相关内容

  • 没有找到相关文章

最新更新