首页
学习
活动
专区
圈层
工具
发布

Log4j配置
EN

Stack Overflow用户
提问于 2012-02-03 15:51:17
回答 1查看 2.1K关注 0票数 0

我有两个附加器,文件和控制台,在我的项目中。我想将我的应用程序配置为这样执行:

名为“my.app.*”的所有记录器:

代码语言:javascript
复制
1. log events DEBUG and higher to fileA
2. log events DEBUG and higher to fileB

所有其他记录器:

代码语言:javascript
复制
1. log events WARN and higher to fileA
2. log events DEBUG and higher to fileB

理想情况下,配置应如下所示:

代码语言:javascript
复制
<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。我为糟糕的格式道歉,今晚真的很难让它工作:/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-03 16:00:30

您需要:

代码语言:javascript
复制
<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>

对于根附加器,您需要两个新的控制台/文件附加器,它们具有所需的级别限制。

代码语言:javascript
复制
<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>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9125352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档