log4j:如何在控制台中仅记录来自 com.foo.* 的消息?

发布于 2024-09-29 08:36:19 字数 1112 浏览 0 评论 0原文

在系统控制台中,我只想记录来自 com.foo.* 的消息,而不记录来自我正在使用 com.bar.* 的外部库的消息,

如下所示我做到了:

<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %p %c - %m%n" />
    </layout>
</appender>

<appender name="bar" class="org.apache.log4j.FileAppender">
    <param name="File" value="logs/bar.log"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %p %c - %m%n" />
    </layout>
</appender>

<logger name="com.foo">
    <level value="ALL" />
    <appender-ref ref="console"/>
</logger>

<logger name="com.bar">
    <level value="ALL" />
    <appender-ref ref="bar"/>
</logger>

<root>
    <level value="ALL" />
    <appender-ref ref="console" />
            <appender-ref ref="bar" />
</root>

问题是来自 com.bar.* 的日志消息仍然显示在控制台中。

谢谢。

in the system console I would like to log only messages from com.foo.* and not messages from an external library that I'm using com.bar.*

Here's what I did:

<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %p %c - %m%n" />
    </layout>
</appender>

<appender name="bar" class="org.apache.log4j.FileAppender">
    <param name="File" value="logs/bar.log"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %p %c - %m%n" />
    </layout>
</appender>

<logger name="com.foo">
    <level value="ALL" />
    <appender-ref ref="console"/>
</logger>

<logger name="com.bar">
    <level value="ALL" />
    <appender-ref ref="bar"/>
</logger>

<root>
    <level value="ALL" />
    <appender-ref ref="console" />
            <appender-ref ref="bar" />
</root>

The problem is that log messages from com.bar.* are still displayed in the console.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

月下凄凉 2024-10-06 08:36:19

如果您只想将 com.foo 记录到控制台,那么我认为您只需从根目录中删除控制台附加程序引用即可获得您想要的内容。

相反,如果您只想阻止 com.bar 登录到控制台,那么我认为这会起作用:

<logger name="com.foo">
    <level value="ALL" />
</logger>

<logger name="com.bar" additivity="false">
    <level value="ALL" />
    <appender-ref ref="bar"/>
</logger>

请记住,默认情况下记录器将可加性设置为 true。请参阅:http://veerasundar.com/blog/ 2009/08/log4j-tutorial-additivity-what-and-why/

If you want to log only com.foo to the console, then I think you can just remove the console appender reference from the root to get what you want.

If instead you want to prevent only com.bar from logging to the console, then I think this would work:

<logger name="com.foo">
    <level value="ALL" />
</logger>

<logger name="com.bar" additivity="false">
    <level value="ALL" />
    <appender-ref ref="bar"/>
</logger>

Keep in mind that loggers have additivity set to true by default. See: http://veerasundar.com/blog/2009/08/log4j-tutorial-additivity-what-and-why/ .

遮了一弯 2024-10-06 08:36:19

您始终可以将 com.bar.* 的级别设置为错误

You can always set the level for com.bar.* to error

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文