使用log4j.xml配置JMSApender

使用log4j.xml配置JMSApender,log4j,Log4j,我正在尝试使用xml样式的配置文件使用Log4j JMSApender,我的Log4j.xml与相同,只是主题名不同。 测试代码非常简单: public static void main(String[] args) throws Exception { Logger logger = Logger.getLogger(Main.class); logger.debug("Debug"); logger.info("Info"); logger.warn("War

我正在尝试使用xml样式的配置文件使用Log4j JMSApender,我的Log4j.xml与相同,只是主题名不同。
测试代码非常简单:

public static void main(String[] args) throws Exception {
    Logger logger = Logger.getLogger(Main.class);
    logger.debug("Debug");
    logger.info("Info");
    logger.warn("Warn");
    logger.error("Error");
    logger.fatal("Fatal");
}
但在测试过程中,我总是遇到这样的错误:

javax.jms.JMSException: Wire format negotiation timeout: peer did not send his wire format.
    at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:62)
    at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1395)
    at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1481)
    at org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:323)
    at org.apache.activemq.ActiveMQConnection.createTopicSession(ActiveMQConnection.java:1112)
My ActiveMQ处于活动状态,但每次发生上述异常时,它都会发出警告消息:

我花了整整一个下午的时间试图找到解决办法,但运气不好。给了我一些提示,我也参考了,但它们并没有帮助我解决我的问题

我知道如何使用log4j.properties而不是log4j.xml,但我想知道的是发生此错误的原因以及如何解决它

希望有人能帮助我。非常感谢


我正在使用ActiveMQ-5.12.0、Log4j-1.2.17、Windows 7平台。

最后,我从中解决了这个问题

第二种情况,我注意到log4j.properties中有一个配置:

我检查了log4j.xml,它只包含appender配置:

<logger name="org.apache.activemq">
    <appender-ref ref="console" />
</logger>

但不包括日志级别的配置。所以我把它改成:

<logger name="org.apache.activemq">
    <level value="INFO" />
    <appender-ref ref="console" />
</logger>

这一次,错误消失了

<logger name="org.apache.activemq">
    <level value="INFO" />
    <appender-ref ref="console" />
</logger>