【发布时间】:2016-02-13 02:58:47
【问题描述】:
我正在使用 log4j 来显示日志...
我正在使用 xml 配置,这是我正在使用的 log4j.xml:
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<appender name="stderr" class="org.apache.log4j.ConsoleAppender">
<param name="threshold" value="warn" />
<param name="target" value="System.err"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %d [%t][%F:%L] : %m%n" />
</layout>
</appender>
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<param name="threshold" value="debug" />
<param name="target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %d [%t][%F:%L] : %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="debug" />
<param name="LevelMax" value="info" />
</filter>
</appender>
<root>
<priority value="ERROR"></priority>
<appender-ref ref="stderr" />
<appender-ref ref="stdout" />
</root>
</log4j:configuration>
当我执行一个主类时,我希望在我的控制台中只显示错误日志。但是 Log4j 仍然显示它的日志:
log4j: Trying to find [log4j.xml] using context classloader sun.misc.Launcher$AppClassLoader@72ea2f77.
log4j: Using URL [file:/Users/***/jpa-model/target/classes/log4j.xml] for automatic log4j configuration.
log4j: Preferred configurator class: org.apache.log4j.xml.DOMConfigurator
log4j: System property is :null
log4j: Standard DocumentBuilderFactory search succeded.
log4j: DocumentBuilderFactory is: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
log4j: debug attribute= "false".
我是否有可能隐藏 log4j 日志?
我尝试自己启动记录器并将级别设置为关闭,但 log4j 仍然显示其正确的日志:
private static final Logger log = Logger.getLogger(HibernateTest.class.getName());
public static void main(String[] args) {
log.setLevel(Level.OFF);
谢谢
【问题讨论】:
-
我使用 log4j 已经有一段时间了,但我认为您可以修改过滤器标签以将最小和最大级别设置为错误。
-
感谢您的回复,我尝试了您所说的,得到了相同的结果...您建议使用另一个记录器系统吗?
-
你指的这个日志不是log4j记录器,而是log4j在初始化时记录到system.out(搜索log4j.xml等)。如果我没记错的话,这是由于在运行程序时传递了 toma debug 参数,是这样吗?
-
我明白了:P,但这里有一些概念性的东西。您不能使用 log4j 来控制 log4j ITSELF 在自我初始化时所做的日志记录。那是标准输出,因为 log4j 还没有准备好。因此,如果你想控制它,你必须寻找你的系统在 log4j 被初始化之前使用什么来记录日志。 (除非我在这里非常错误......:/)
-
感谢您的分析...我同意您的看法...我正在尝试做的事情没有意义...很好,我学到了一些东西...非常感谢您
标签: log4j