小编典典

如何配置log4j以将不同的日志级别记录到同一记录器的不同文件中

java

我有一个普通的INFO级别应用日志。我需要的是另外记录所有错误级别的事件,以单独的错误日志。我正在使用这样的配置:

<logger name="com.acme">
  <level value="error"/>
  <appender-ref ref="error"/>
</logger>

<logger name="com.acme">
  <level value="info"/>
</logger>

<root>
  <level value="warn"/>
  <appender-ref ref="general"/>
</root>

此配置仅记录错误。如果我首先放置信息级别记录器,则它将仅记录到一般附加程序,但错误记录器将无法工作。我想让他们两个都工作。


阅读 296

收藏
2020-09-11

共1个答案

小编典典

您需要做的是只有一个<logger>定义了INFO级别的定义,但是在您的两个追加器定义中,您需要相应地设置其阈值,例如

<appender name="ERROR_FILE">
   <param name="Threshold" value="ERROR"/>
</appender>

<appender name="GENERAL">
   <param name="Threshold" value="INFO"/>
</appender>

然后,将两个追加程序添加到记录器中:

<logger name="com.acme">
  <level value="INFO"/>
  <appender-ref ref="ERROR_FILE"/>
  <appender-ref ref="GENERAL"/>
</logger>

现在进入记录器的日志条目将被发送到两个附加程序,但是由于它们具有不同的独立阈值,因此ERROR_FILE附加程序将仅记录ERROR及更高版本。

2020-09-11