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

Java log4j:如何在控制台中只记录来自com.foo.*的消息?,java,xml,log4j,Java,Xml,Log4j,在系统控制台中,我只想记录来自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

在系统控制台中,我只想记录来自
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.*
的日志消息

谢谢。

如果您只想将com.foo登录到控制台,那么我认为您可以从根目录中删除console appender引用以获得所需内容

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

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

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

. 

如果您只想将com.foo登录到控制台,那么我认为您可以从根目录中删除控制台appender引用,以获得所需的内容

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

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

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


.

您始终可以设置com.bar的级别。*若要出错

您始终可以设置com.bar的级别。*若要出错

我按照您的建议做了,但我一直在控制台中看到com.bar的日志。我可能误解了您最初的要求。我修改了我的答案。希望有帮助。是的,我只想在控制台上登录com.foo。我已从根目录中删除了console appender,但来自com.bar的消息仍显示在控制台中。您是否尝试将“com.bar”的日志级别临时设置为“无”?如果您这样做并且仍然看到消息,那么您就不会加载您认为是的log4j配置。我已经做过很多次了。否则,我建议使用最新的配置XML更新您的问题。这个问题通过另一个SO问题得到解决:我按照您的建议做了,但我一直在控制台中看到com.bar的日志。我可能误解了您最初的要求。我修改了我的答案。希望有帮助。是的,我只想在控制台上登录com.foo。我已从根目录中删除了console appender,但来自com.bar的消息仍显示在控制台中。您是否尝试将“com.bar”的日志级别临时设置为“无”?如果您这样做并且仍然看到消息,那么您就不会加载您认为是的log4j配置。我已经做过很多次了。否则,我建议使用最新的配置XML更新您的问题。此问题已通过另一个SO问题解决: