Apache Camel中记录过滤消息体的最佳方法

时间:2014-01-08 09:36:07

标签: logging apache-camel

我们的邮件正文(XML)包含我们不想记录的敏感信息。记录过滤后的邮件正文的最佳方法是什么?我正在使用Java DSL定义我的路由,并希望使用log DSL。

非常感谢你 优素福

1 个答案:

答案 0 :(得分:2)

如果您想坚持使用CamelLogProcessor(因为此处理器是在日志DSL的引擎下调用的),那么可以编写自己的自定义ExchangeFormatter并将其注入记录器。 Documentation可能有用。

虽然提到的处理器没有什么特别的(但通常是完全足够的):

public boolean process(Exchange exchange, AsyncCallback callback) {
    if (log.shouldLog()) {
        log.log(formatter.format(exchange));
    }
    callback.done(true);
    return true;
}

在这种情况下,最好编写自己的处理器并路由到它而不是记录模式(如果你必须使用漂亮的DSL然后编写自己的组件,但我不认为这是你真正想要的) 。如果您已决定路由到您自己的处理器实现,那么您可以以您喜欢的方式记录您想要记录的任何内容(例如省略敏感信息)。

Camel用于日志记录的通用处理器是通用的:),因此在两种情况下,项目特定的实现对我都很有效:敏感信息或限制日志记录时间。