Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在调试级别(客户端)使用带有ActiveMQ的log4j JMSApender-wire格式超时_Java_Logging_Log4j_Activemq_Appender - Fatal编程技术网

Java 在调试级别(客户端)使用带有ActiveMQ的log4j JMSApender-wire格式超时

Java 在调试级别(客户端)使用带有ActiveMQ的log4j JMSApender-wire格式超时,java,logging,log4j,activemq,appender,Java,Logging,Log4j,Activemq,Appender,我正在尝试使用log4jmsappender和ActiveMQ创建一个POC。我成功地遵循了这个示例-> 但这是信息层面的。我做了一些修改以在调试级别使用它,我的程序和activeMQ无法交换它们的wire格式。这是我的log4j(客户端) 运行客户端时,出现wire格式错误 制片人节目: import org.apache.log4j.Logger; public class ProducerDebug { public static void main( String[] args )

我正在尝试使用log4jmsappender和ActiveMQ创建一个POC。我成功地遵循了这个示例->

但这是信息层面的。我做了一些修改以在调试级别使用它,我的程序和activeMQ无法交换它们的wire格式。这是我的log4j(客户端)

运行客户端时,出现wire格式错误

制片人节目:

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:Wire格式协商超时:对等方没有 发送他的电报格式。在 org.apache.activemq.util.jmsceptionsupport.create(jmsceptionsupport.java:72) 在 org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1412) 在 org.apache.activemq.ActiveMQConnection.encureReconnectionInfoSent(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(JMSAppender.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(PropertyConfigurator.java:842) 在 org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768) 在 org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648) 在 org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514) 在 org.apache.log4j.PropertyConfigurator.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)位于 producerderebug.(producerderebug.java:13)位于 awg.adb.producer.producerderebug.main(producerderebug.java:9)由以下原因引起: java.io.IOException:有线格式协商超时:对等方未 发送他的电报格式。在 org.apache.activemq.transport.wireformatcongregator.oneway(wireformatcongregator.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.logger.your.package=jms'更改为'log4j.logger.your.package=DEBUG,jms',它开始工作了。
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.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