【问题标题】:Log4j configurationLog4j 配置
【发布时间】: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 及更高版本上登录到控制台。本质上,&lt;logger name=""&gt; 被忽略了。还有其他方法可以用 log4j 模拟这种行为吗?

附言。我为糟糕的格式道歉,今晚真的很难让它工作:/

【问题讨论】:

  • 您是否忘记在根元素中输入第二个附加程序?
  • logger name="" 什么都不做,rootlogger 做你认为 name="" 做的事情。
  • @guido: 如果我在 root 中对 fileB 进行引用,那么所有其他记录器只会在 WARN 及更高版本上写入它,而我希望他们在 DEBUG 及更高版本上写入它
  • @oers:我就是这么想的。有没有办法模拟 rootlogger,以便我可以在祖先链中使用它?

标签: log4j


【解决方案1】:

你需要:

<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>

【讨论】:

  • 我很抱歉,但我在原帖中有错字。两者实际上都是文件附加程序。是否可以让两个不同的文件追加器写入同一个文件?
  • @Josh 我不这么认为:stackoverflow.com/questions/4046825/…
  • 嗯,谢谢。但你是对的,你的解决方案适用于我原来的控制台和文件问题。
猜你喜欢
  • 1970-01-01
  • 2017-09-24
  • 2010-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多