无法使用log4j2在activemq中记录消息

时间:2015-12-23 05:01:56

标签: java logging jms activemq log4j2

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;


public class Producer {
    private static String url = ActiveMQConnection.DEFAULT_BROKER_URL;
    private static String QUEUE_NAME = "kesaven";
    private static final Logger logger = LogManager.getLogger(Producer.class.getName());
public static void main(String[] args) throws JMSException
{
    //System.out.println(url);
    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
    Connection connection = connectionFactory.createConnection();
    connection.start();

    Session session = connection.createSession(false,
            Session.AUTO_ACKNOWLEDGE);
    Destination destination = session.createQueue(QUEUE_NAME);
    MessageProducer producer = session.createProducer(destination);
    //TextMessage message = session.createTextMessage("My first log message to queue");
    logger.info("My first log message to queue");
    //producer.send(message);
    //System.out.println("Sentage '" + message.getText() + "'");
    connection.close();



}

}

我正在尝试使用log4j2和activemq将消息记录到队列中。我正在使用log4j2.3和队列我正在使用activemq 5.9.0。我能够在队列中看到异常消息而不是我发送的消息。以下是队列中的错误消息

  

javax.jms.JMSException:无法从内容构建正文。   可序列化的类不可用于代理。原因:   抛出java.lang.ClassNotFoundException:   org.apache.logging.log4j.core.impl.Log4jLogEvent $ LogEventProxy

3 个答案:

答案 0 :(得分:1)

您使用什么appender将数据写入ActiveMQ?我建议使用RFC5424布局或其他一些在阅读事件时不需要Log4j2 jar的格式,而不是使用Java序列化来编写将其序列化为JSON的日志事件。

答案 1 :(得分:0)

由于Log4event已放入队列,您可以检查代理端是否有可用的log4j2 jar。

答案 2 :(得分:0)

我将以下jar从log4j2添加到activeMQ server / lib目录以使其工作

的log4j-API-2.6.1, log4j的核-2.6.1

我只记录了Strings,如果我尝试记录ObjectMessages,队列条目将无法在队列管理器视图中打开,JSP就会失败。