在系统控制台中我只想记录来自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.*
的日志消息仍显示在控制台中。
感谢。
答案 0 :(得分:1)
如果您只想将 com.foo登录到控制台,那么我认为您可以从root用户中删除控制台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>
请记住,记录器默认情况下将可加性设置为true。见:http://veerasundar.com/blog/2009/08/log4j-tutorial-additivity-what-and-why/。
答案 1 :(得分:0)
您始终可以将com.bar。*的级别设置为错误