我正在尝试使用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();
任何帮助都会让人感到欣慰。感谢。
答案 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;申请并运行。 显然你的文件应该有主..