monitorInterval在log4j2中不起作用

时间:2014-10-01 22:24:48

标签: java logging log4j log4j2 error-logging

我尝试在我的应用程序中使用log4j2来允许在运行时中动态重新配置日志级别。但我无法成功地使monitorInterval工作。控制台和文件追加器工作正常。这是我的log4j2.xml,

<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="5">
<Appenders>
<Console name="consoleAppender" target="SYSTEM_OUT">
  <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</Console>
<File name="fileAppender" fileName="learning.log" append="true">
  <PatternLayout pattern="%t %-5p %c{2} - %m%n"/>
</File>
</Appenders>

<Loggers>
<Root level="error">
  <!--  <AppenderRef ref="consoleAppender"/>-->
  <AppenderRef ref="fileAppender"/>
</Root>
</Loggers>  
</Configuration>

请帮助找到问题。谢谢!

1 个答案:

答案 0 :(得分:4)

如果您在Eclipse中运行时遇到此问题,请注意Eclipse会将您的log4j2.xml文件从$ {project} / src复制到$ {project} / bin。 Log4j将在类路径中加载log4j2.xml文件,即$ {project} / bin。如果现在修改src /文件夹中的其他配置文件,则在Eclipse检测到需要重建之前,可能无法将其复制到bin /文件夹。也许只有对.java文件的更改才会触发重建。

因此,修改src / log4j2.xml将不会&#34;工作&#34;因为log4j从bin / log4j2.xml加载了配置。

如果指定了配置文件位置,则不会产生混淆:你自己和log4j对配置文件位置有相同的理解。

如果这不能解决问题,请尝试使用系统属性-Dlog4j.debug运行:这将显示控制台上的内部log4j2日志记录,包括从配置加载的位置。另请参阅FAQ