Java 如何从log4j获取日志文件中的apachecamel消息历史记录?

Java 如何从log4j获取日志文件中的apachecamel消息历史记录?,java,log4j,apache-camel,log4j2,Java,Log4j,Apache Camel,Log4j2,在中,是一个很好的消息历史记录。我想把这个给我的错误处理程序。我也是 errorHandler( deadLetterChannel("direct:deadLetter") .logExhaustedMessageHistory(true) .maximumRedeliveries(3) .retryAttemptedLogLevel(LoggingLevel.WARN)

在中,是一个很好的消息历史记录。我想把这个给我的错误处理程序。我也是

errorHandler(
            deadLetterChannel("direct:deadLetter")
                .logExhaustedMessageHistory(true)
                .maximumRedeliveries(3)
                .retryAttemptedLogLevel(LoggingLevel.WARN)
                );
而且:

CamelContext context = getContext();
context.setMessageHistory(true);
但是nice消息历史记录不会显示,不会显示在控制台中,也不会显示在日志文件中。我如何激活它

我的log4j appenders是:

<Appenders>
    <Console name="STDOUT" target="SYSTEM_OUT">
        <PatternLayout pattern="%d{yyyy/MM/dd-HH:mm:ss} %-5p %C:%M:%L ~ %m%n"/>
    </Console>
...
我解决了这个问题:

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");
是的,这是一个错误: 在2.16中解决

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");