如何使logger.trace()和logger.info()一起工作

时间:2017-04-14 11:13:53

标签: java logging log4j wildfly slf4j

我在 INFO 功能的不同文件中记录 TRACE 功能时出现问题,我准备了一个包含所有必需配置的经典log4j.xml文件。

logger.info()正在运作 logger.trace() 正在工作。

         <appender name="file" class="org.apache.log4j.FileAppender">
            <param name="append" value="true" />
            <param name="file" value="C:/logs/transaction.log" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
            </layout>
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <param name="LevelMin" value="TRACE" />
                <param name="LevelMax" value="TRACE" />
                <param name="AcceptOnMatch" value="true" />
            </filter>
        </appender>

        <appender name="fileINFO" class="org.apache.log4j.FileAppender">
            <param name="append" value="true" />
            <param name="file" value="C:/logs/server.log" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
            </layout>
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <param name="LevelMin" value="INFO" />
                <param name="LevelMax" value="INFO" />
                <param name="AcceptOnMatch" value="true" />
            </filter>
        </appender>

        <logger name="ma.prg.net">
            <level value="trace" />
            <appender-ref ref="file" />
        </logger>

        <logger name="ma.prg.net">
            <level value="info" />
            <appender-ref ref="fileINFO" />
        </logger>
在添加 fileINFO appender之前,

logger.trace()工作正常。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您无法两次配置相同的记录器。只需将记录器配置更改为:

<logger name="ma.prg.net">
  <level value="trace" />
  <appender-ref ref="file" />
  <appender-ref ref="fileINFO" />
</logger>

使用此功能,您可以将日志消息发送给两个 appenders。但是,由于您已使用 LevelMin LevelMax 单独配置每个appender,因此每个appender都会过滤掉它应该打印的消息。