如何从 log4j 的日志文件中获取 Apache Camel 消息历史记录?
How can I get the Apache Camel Message History in logfile from log4j?
在 Apache Camel documantation 中是一个不错的消息历史记录。我想要这个用于我的 errorHandler。所以我
errorHandler(
deadLetterChannel("direct:deadLetter")
.logExhaustedMessageHistory(true)
.maximumRedeliveries(3)
.retryAttemptedLogLevel(LoggingLevel.WARN)
);
还有:
CamelContext context = getContext();
context.setMessageHistory(true);
但是漂亮的消息历史记录没有显示,不在控制台中,也不在日志文件中。我该如何激活它?
我的 log4j 附加程序是:
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy/MM/dd-HH:mm:ss} %-5p %C:%M:%L ~ %m%n"/>
</Console>
...
我有搜索 Google,但我只找到上面的信息,这些都不起作用。
谢谢
编辑:
这项工作,但我丢失了 deadLetterChannel。这是一个错误?
errorHandler(
defaultErrorHandler()
.logExhausted(true)
.logExhaustedMessageHistory(true)
);
我解决了问题:
errorHandler(
deadLetterChannel("direct:deadLetter")
.maximumRedeliveries(3)
.retryAttemptedLogLevel(LoggingLevel.WARN)
);
from("direct:deadLetter").id("deadLetter")
.routeId("deadLetter")
.errorHandler(defaultErrorHandler().disableRedelivery())
.process(new Processor() {
public void process(Exchange msg) {
String MsgHist = org.apache.camel.util.MessageHelper.dumpMessageHistoryStacktrace(msg, new DefaultExchangeFormatter(), false);
LOG.error(MsgHist, msg);
msg.getOut().setBody(msg.getIn().getBody(Document.class));
msg.getOut().setHeaders(msg.getIn().getHeaders());
msg.getOut().setHeader("MessageHistory",MsgHist);
}
})
.log(LoggingLevel.ERROR,"${exception.stacktrace}")
.setHeader("ErrorMessage",simple("${exception}",String.class))
.setHeader("ErrorStacktrace",simple("${exception.stacktrace}",String.class))
.to("activemqWithoutTransactions:errors");
是的,这是一个错误:
https://issues.apache.org/jira/browse/CAMEL-8755
2.16解决
在 Apache Camel documantation 中是一个不错的消息历史记录。我想要这个用于我的 errorHandler。所以我
errorHandler(
deadLetterChannel("direct:deadLetter")
.logExhaustedMessageHistory(true)
.maximumRedeliveries(3)
.retryAttemptedLogLevel(LoggingLevel.WARN)
);
还有:
CamelContext context = getContext();
context.setMessageHistory(true);
但是漂亮的消息历史记录没有显示,不在控制台中,也不在日志文件中。我该如何激活它?
我的 log4j 附加程序是:
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy/MM/dd-HH:mm:ss} %-5p %C:%M:%L ~ %m%n"/>
</Console>
...
我有搜索 Google,但我只找到上面的信息,这些都不起作用。
谢谢
编辑:
这项工作,但我丢失了 deadLetterChannel。这是一个错误?
errorHandler(
defaultErrorHandler()
.logExhausted(true)
.logExhaustedMessageHistory(true)
);
我解决了问题:
errorHandler(
deadLetterChannel("direct:deadLetter")
.maximumRedeliveries(3)
.retryAttemptedLogLevel(LoggingLevel.WARN)
);
from("direct:deadLetter").id("deadLetter")
.routeId("deadLetter")
.errorHandler(defaultErrorHandler().disableRedelivery())
.process(new Processor() {
public void process(Exchange msg) {
String MsgHist = org.apache.camel.util.MessageHelper.dumpMessageHistoryStacktrace(msg, new DefaultExchangeFormatter(), false);
LOG.error(MsgHist, msg);
msg.getOut().setBody(msg.getIn().getBody(Document.class));
msg.getOut().setHeaders(msg.getIn().getHeaders());
msg.getOut().setHeader("MessageHistory",MsgHist);
}
})
.log(LoggingLevel.ERROR,"${exception.stacktrace}")
.setHeader("ErrorMessage",simple("${exception}",String.class))
.setHeader("ErrorStacktrace",simple("${exception.stacktrace}",String.class))
.to("activemqWithoutTransactions:errors");
是的,这是一个错误: https://issues.apache.org/jira/browse/CAMEL-8755 2.16解决