2

我正在尝试在 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();

任何帮助都会有所帮助。谢谢。

4

2 回答 2

4

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

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

运行你的 java 程序,-Dlog4j.debug让 log4j 在启动时输出一堆关于它在哪里寻找配置文件的信息。

于 2012-09-17T20:09:56.907 回答
1

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

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

因此,似乎什么都没写,实际上是在不同的地方写的。:)

2)在 Eclipse 上,尝试“matt B”之前的答案所建议的选项..

转到 RUN > RUN Configurations > Arguments [tab] 并在 VM arguments > Apply 和 RUN 中输入值。显然你的文件应该有 main..

于 2013-09-24T15:34:20.217 回答