具有回退的基于组件的日志记录(或:拦截外部日志消息)

时间:2011-10-18 14:15:03

标签: java logging logback

我正在寻找一种定义传递日志消息路由的方法。假设我们有一个名为poly的应用程序:

com.mycompany.server-common
com.mycompany.communication
com.mycompany.webservice

server-common被其他两个人使用。所有3个也使用org.hibernate。

现在,我喜欢为webservice组件提供1个日志文件,其中包含来自com.mycompany.webservice的所有消息以及来自web服务启动的com.mycompany.server-common和org.hibernate的消息。然后,另一个通信包的相应文件。

我的应用程序是在tomcat中运行的war文件,其中所有组件都在1个上下文中运行(它来自1个war文件)。我已经定义了多个日志文件,但它们自然只记录我静态定义的内容,没有传递包含。

我对如何实现理想行为的想法非常感兴趣。我已经考虑过使用MDC,但我不确定这是不是一个好主意。 另一个想法是分离上下文,但我认为在目前的项目状态下,这将很难,并且它不能提供我希望的灵活性。

赞赏任何提示或讨论。

1 个答案:

答案 0 :(得分:2)

如果在webservice开始提供请求时设置MDC密钥并在请求结束时清除MDC密钥,则SiftingAppender将按您的要求执行操作。如果遇到困难,请在logback用户邮件列表上大喊。