Log4j:从控制台排除日志,但是为这些日志创建新的日志文件

时间:2019-02-20 08:32:31

标签: java logging log4j

我的Java项目包含以下软件包- com.main.log4j.main,com.main.log4j.other。

我希望从控制台日志中删除软件包“ com.main.log4j.other”的日志行,而是为同一软件包维护一个不同的日志文件。我正在使用Log4j版本1.2.16,并具有以下log4j.xml配置。

<appender name="CONSOLE-LOG" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="..." />
    </layout>
</appender>

<appender name="OTHER-LOG" class="org.apache.log4j.FileAppender">
    <param name="File" value="logs/Others.log" />
    <param name="Threshold" value="DEBUG" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="..." />
    </layout>
</appender>

<category name="com.main.log4j.other">
    <appender-ref ref="OTHER-LOG" />
</category>
<root>
    <level value="debug" />
    <appender-ref ref="CONSOLE-LOG" />
</root>

使用此配置,使用日志行创建一个单独的日志文件Others.log,但这些日志行仍存在于控制台日志中。 我想排除它们。 请建议我如何配置log4j.xml?

1 个答案:

答案 0 :(得分:0)

在“ com.main.log4j.other”类别中将additivity设置为false:

<category name="com.main.log4j.other" additivity="false">

这将防止这些日志也记录在根记录器中。