我有两个附加器,文件和控制台,在我的项目中。我想将我的应用程序配置为这样执行:
名为“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来模拟这种行为?
PS。我为糟糕的格式道歉,今晚真的很难让它工作:/
发布于 2012-02-03 16:00:30
您需要:
<logger name="my.app" additivity="false">
<level="DEBUG"/>
<appender-ref ref="console"/>
<appender-ref ref="file"/>
</logger>
<root>
<appender-ref ref="console-warn"/>
<appender-ref ref="file-debug"/>
</root>对于根附加器,您需要两个新的控制台/文件附加器,它们具有所需的级别限制。
<appender name="file-debug" class="org.apache.log4j.FileAppender">
<param name="Threshold" value="DEBUG"/>
</appender>
<appender name="console-warn" class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="WARN"/>
</appender>https://stackoverflow.com/questions/9125352
复制相似问题