gpt4 book ai didi

java - 根据线程记录到不同的文件

转载 作者:搜寻专家 更新时间:2023-10-31 20:23:28 25 4
gpt4 key购买 nike

我有一个包含多个“ Controller ”的应用程序,我希望每个 Controller 都记录到自己的文件中。这对于他们自己的代码来说已经足够简单了,但我还使用了一些使用公共(public)日志记录的库代码。我能否以某种方式让该代码也登录到特定于 Controller 的文件中?

我在想我可以通过线程以某种方式做到这一点:

class Controller {

public void action() {
setCurrentThreadLogFile(myLogFile);
try {
Library.stuff();
} finally {
restoreCurrentThreadLogFile();
}
}

}

目前我也在使用 commons-logging 进行我自己的日志记录,使用 log4j 作为后端。但如果需要,我可以更改它,或者混合使用(这在公共(public)日志记录框架内是否可行)。

我可以做到这一点的一种方法是编写我自己的公共(public)日志记录实现(可能是 log4j 的包装器),但是是否有现成的解决方案?

最佳答案

您可能想要查看映射的诊断上下文 (MDC)。 Commons 日志记录不支持这些,但 Log4J 支持,因此您必须直接转到 Log4J 进行设置。您可能需要滚动自己的过滤器以使用 MDC 进行过滤并应用于附加程序。

如果您愿意更改日志记录实现,那么您可以使用 SL4J 作为日志外观并使用 Logback 作为日志实现。让 Controller 或某种过滤器/拦截器为要用于区分 Controller 的键添加鉴别器值 MDC .使用 SiftingAppender将日志事件分离到单独的文件中。

关于java - 根据线程记录到不同的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5135537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com