[英]not able to Log the message in activemq using 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
您使用什么 appender 將數據寫入 ActiveMQ? 我建議不要使用 Java 序列化來編寫將其序列化為 JSON 的日志事件,而是使用 RFC5424 布局或其他一些在讀取事件時不需要 Log4j2 jar 的格式。
由於 Log4event 放在隊列中,您可以檢查代理端是否有可用的 log4j2 jars。
我將以下 jars 從 log4j2 添加到 activeMQ 服務器 /lib 目錄以使其工作
log4j-api-2.6.1、log4j-core-2.6.1
我只記錄字符串,如果我嘗試記錄 ObjectMessages,隊列條目將不會在隊列管理器視圖中打開,JSP 失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.