Log4j:文件中的FileAppender相对于类路径

时间:2014-08-01 13:48:42

标签: java log4j

我设法正确地为log4j配置了一个配置文件并使用它直接指向它:

URL logProperties =  Program.class.getResource("log.properties");
PropertyConfigurator.configure(logProperties.getFile());

(我认为它可以做得更简单,我读了一些关于默认属性文件,但不是实际的主题) 问题是:属性文件是从调用方法的类路径加载的,这很好,但我在配置中有类似的东西:

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=console.log

我想知道'console.log'也在类路径中,但不幸的是它似乎在可执行文件的当前目录中(从eclipse启动,位于/ bin文件夹的目录父目录中)。 有没有办法在类路径中指定文件,当然没有指定 log4net 的完整路径? 的修改 通过这个问题What is the .NET equivalent of java's System.getProperty("user.dir")?我了解System.getProperty("user.dir")的等价性 和.NET

Assembly.GetExecutingAssembly().Location

不幸的是,在我看来,编写$ {user.dir} /console.log并没有产生任何差异(即日志似乎保留在当前目录中,而不是在可执行文件附近。

1 个答案:

答案 0 :(得分:0)

条目

log4j.appender.R.File=console.log

定义日志语句的输出,即代码中的日志语句应该去的位置。 将此输出文件放在类路径中是没有意义的。相反(如果未指定其他路径),文件将写入应用程序的工作目录(当前目录)。