将日志记录限制为仅一个jar log4j

时间:2011-10-07 07:50:32

标签: java log4j

我有一个项目,而这个项目又由其他几个项目使用。我希望log4j仅将我的日志记录到我在属性文件中指定的文件中。其他项目使用自己的日志记录机制,我无法控制它们。我的log4j文件不应该影响其他项目的日志记录。我应该如何配置我的log4j属性文件?

到目前为止,我正在做的是设置log4j.rootLogger = ERROR和我的模块log4j.logger.com.xyz.myproject = INFO, FILE。这会不会影响其他项目的记录器吗?或者可能只限制记录到我的罐子里?

由于

2 个答案:

答案 0 :(得分:2)

这取决于其他项目的包结构。假设

  • 来自其他项目的记录器由Logger.getLogger(ClassA.class) AND
  • 创建
  • 其中一些依赖于root logger配置(没有特定的log4j.category.loggerName设置AND
  • 这些项目包含项目使用的包的子包(即您的项目包是com.abc.def,其他项目的层次结构更深层com.abc.def.ghi那么

更改com.abc.def日志记录级别会影响其他项目 - 他们将开始登录com.abc.def定义的级别。

确认情况并非如此,您应该安全。

答案 1 :(得分:1)

我想你的jar完全包含在你自己的包中(ex com.foo.mypackage)。在这种情况下,只需添加到您的log4j配置,如:

# Print only messages of priority WARN or above in the package com.foo
log4j.category.com.foo=WARN
# Print only messages of priority DEBUG or above in the package com.foo.mypackage
log4j.category.com.foo.mypackage=DEBUG

此致

微米。