Bar*_*lom 5 java logging log4j apache-commons-logging
我有一个带有多个"控制器"的应用程序,我想将每个日志记录到他们自己的文件中.这对于他们自己的代码来说已经足够了,但我也在使用一些使用commons日志记录的库代码.我能以某种方式获取该代码以登录到控制器特定的文件吗?
我以为我可以通过线程以某种方式做到这一点:
class Controller {
public void action() {
setCurrentThreadLogFile(myLogFile);
try {
Library.stuff();
} finally {
restoreCurrentThreadLogFile();
}
}
}
Run Code Online (Sandbox Code Playgroud)
目前我正在使用commons-logging来记录我自己的日志,log4j作为后端.但是如果需要的话,我可以改变它,或者使用混合(这在公共日志框架中是可能的).
我可以这样做的一种方法是编写我自己的公共日志记录实现(可能是log4j的包装器),但是有现成的解决方案吗?
您可能想要查看映射的诊断上下文 (MDC)。Commons 日志记录不支持这些,但 Log4J 支持,因此您必须直接转到 Log4J 进行设置。您可能需要滚动自己的过滤器来使用 MDC 进行过滤并应用于附加程序。
如果您愿意更改日志记录实现,那么您可以使用 SL4J 作为日志记录外观,并使用 Logback 作为日志记录实现。让控制器或某种过滤器/拦截器为您将用来区分 MDC 控制器的键添加鉴别器值。使用SiftingAppender将日志事件分离到单独的文件中。
| 归档时间: |
|
| 查看次数: |
1575 次 |
| 最近记录: |