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

燃烧器

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

是的,这是一个Bug:https: //issues.apache.org/jira/browse/CAMEL-8755已在2.16中解决

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Pubnub-删除历史记录中的消息(存储)

来自分类Dev

如何在 git 分支中获取给定作者的提交消息历史记录?

来自分类Dev

Tomcat保存日志历史记录

来自分类Dev

获取您的实例的历史记录

来自分类Dev

TFS删除文件的历史记录

来自分类Dev

合并Subversion文件历史记录

来自分类Dev

附加文件的历史记录行号

来自分类Dev

如何查看合并历史记录?

来自分类Dev

如何减少存储历史记录?

来自分类Dev

如何暂停VIM历史记录?

来自分类Dev

如何清除git历史记录?

来自分类Dev

如何清除注销历史记录

来自分类Dev

如何查看登录历史记录?

来自分类Dev

如何暂停VIM历史记录?

来自分类Dev

如何清除终端历史记录?

来自分类Dev

如何查看登录历史记录?

来自分类Dev

如何减少存储历史记录?

来自分类Dev

如何保留备份历史记录?

来自分类Dev

如何清除密码历史记录?

来自分类Dev

如何更改活动历史记录

来自分类Dev

如何忽略颠覆历史记录

来自分类Dev

如何导出 Skype 的历史记录?

来自分类Dev

如何清除终端历史记录

来自分类Dev

ipdb会话中的历史记录

来自分类Dev

zsh中的命令历史记录

来自分类Dev

zsh中的命令历史记录

来自分类Dev

zsh中的命令历史记录

来自分类Dev

脚本中的Bash历史记录:`!#:*`

来自分类Dev

如何通过API从Hipchat获取房间的所有消息历史记录?