【发布时间】:2012-02-03 07:51:17
【问题描述】:
我的项目中有两个附加程序,文件和控制台。我想将我的应用程序配置为这样执行:
所有名称为“my.app.*”的记录器:
1. log events DEBUG and higher to fileA
2. log events DEBUG and higher to fileB
所有其他记录器:
1. log events WARN and higher to fileA
2. log events DEBUG and higher to fileB
理想情况下,配置应如下所示:
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="fileA" class="org.apache.log4j.FileAppender">
<!-- configuration -->
</appender>
<appender name="fileB" class="org.apache.log4j.FileAppender">
<!-- configuration -->
</appender>
<logger name="my.app" additivity="false">
<level="DEBUG"/>
<appender-ref ref="fileA"/>
</logger>
<logger name="" additivity="true">
<level="DEBUG"/>
<appender-ref ref="fileB"/>
</logger>
<root>
<level="WARN"/>
<appender-ref ref="fileA"/>
</root>
</log4j>
但是,此设置会导致名为“my.app”的记录器仅登录到控制台,而所有其他记录器在 WARN 及更高版本上登录到控制台。本质上,<logger name=""> 被忽略了。还有其他方法可以用 log4j 模拟这种行为吗?
附言。我为糟糕的格式道歉,今晚真的很难让它工作:/
【问题讨论】:
-
您是否忘记在根元素中输入第二个附加程序?
-
logger name="" 什么都不做,rootlogger 做你认为 name="" 做的事情。
-
@guido: 如果我在 root 中对 fileB 进行引用,那么所有其他记录器只会在 WARN 及更高版本上写入它,而我希望他们在 DEBUG 及更高版本上写入它
-
@oers:我就是这么想的。有没有办法模拟 rootlogger,以便我可以在祖先链中使用它?
标签: log4j