java - Log4j : Exclude Log from Console but create new log file for those logs

标签 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?

最佳答案

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

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

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

关于java - Log4j : Exclude Log from Console but create new log file for those logs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54781914/

相关文章:

java - XMLSocketReceiver 和 SocketReceiver 如何工作?

java - 为什么要为 logger.debug() 使用额外的 if 条件?

java - 如何更改 KafkaStream 的日志级别

java - 处理流数据、更新 GUI、使用线程,并且不错过任何一个节拍?

部署在 Ubuntu/Apache 服务器上时,Django 日志记录不工作

java - 有人知道 JDeveloper/SQL Developer 使用什么加密技术来持久化凭据吗?

Azure ApiApp 中的 Java 日志记录

msbuild - 巡航控制 .NET 4.0 MSBUILD 记录器

java - 如何从 JAVA 中的两个集合中获取不匹配的字符串?

java - 拆分 ArrayList 时出现重复