gpt4 book ai didi

java - 为库的每个实例单独记录器

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:18:50 27 4
gpt4 key购买 nike

我们有一个普通的老式 java 库,它是从许多不同的应用程序实例化而来的。在这种情况下,每个应用程序都是一个 Web 应用程序,它们都位于同一个 tomcat 容器中。

每个应用程序使用自己的记录器记录到自己的日志文件。我们希望库生成的与特定应用程序相关的日志也进入该应用程序单独的日志文件。

为此,一种方法是允许应用程序将其记录器传递给库:

library = new library(Logger applicationsVeryOwnLogger);

然后使用那个记录器,记录库中的所有语句。但是,这意味着记录器现在是库中的类变量,库中的每个类都需要引用库才能使用正确的记录器。

有没有更好的方法来做到这一点?

最佳答案

您已经使用 log4j 标记标记了您的问题,所以我假设您正在使用它。

我希望您的库使用唯一的包名称。

如果是这种情况,您实际上可以为该包设置一个记录器。

log4j.category.my.lib.package = INFO, libFileAppender
log4j.rootLogger = INFO, rootFileAppender

这样做会将您的库中的消息记录到 libFileAppenderrootFileAppender

如果您不想让您的库中的消息出现在 rootFileAppender 中,您可以关闭该记录器的可加性,如下所示:

log4j.category.my.lib.package = INFO, libFileAppender
log4j.additivity.my.lib.package = false
log4j.rootLogger = INFO, rootFileAppender

这样,您将只会在 libFileAppender 中看到消息

关于java - 为库的每个实例单独记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8494021/

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