使用java中的log4j未更新/创建日志文件

时间:2012-09-17 20:06:42

标签: java log4j

我正在尝试使用Java中的log4j捕获日志。可执行文件位于linux环境中,它显示日志消息,但是它没有写入日志文件。我正在使用log4j.xml,这是我到目前为止的

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

  <appender name="LocalFileAppender" class="org.apache.log4j.RollingFileAppender">
    <param name="File"   value="logs/error.log" />
    <param name="Append" value="true" />
    <param name="MaxFileSize" value="500KB" />
    <param name="maxBackupIndex" value="1" />
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d %-5p [%c] - %m%n"/>
      </layout>
  </appender>

  <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.SimpleLayout"/>
  </appender>

  <root>
    <priority value ="Debug" />
    <appender-ref ref="console" /> 
  </root>
</log4j:configuration>

我不清楚java程序如何知道xml文件的位置。我认为这就是问题所在。而且,这就是我在代码中设置的方式,

log = Logger.getLogger(MyClass.class);

BasicConfigurator.configure();

任何帮助都会让人感到欣慰。感谢。

2 个答案:

答案 0 :(得分:4)

您可以将log4j.xml文件放在应用程序的类路径中,log4j会在第一次使用log4j时自动找到它。

但是,通过调用BasicConfigurator.configure(),您将撤消XML文件所做的任何配置 - 因为这会仅为根记录器设置控制台appender。

使用-Dlog4j.debug运行您的java程序,让log4j输出一堆有关配置文件启动时查找位置的信息。

答案 1 :(得分:1)

1)在Windows环境中,   即使所有参数都正确,也需要确保文件的路径是绝对的,并用“/”而不是普通的“\”分隔。

在决定路径时,“\”被忽略,因此它成为一个大名称。

因此看起来似乎没有写过任何东西,实际上它是在不同的地方写的。 :)

2)在Eclipse上,尝试使用“matt B”的前一个答案建议的选项。

转到RUN&gt; RUN配置&gt;参数[tab]并将值放入VM参数&gt;申请并运行。   显然你的文件应该有主..