我设法正确地为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并没有产生任何差异(即日志似乎保留在当前目录中,而不是在可执行文件附近。
答案 0 :(得分:0)
条目
log4j.appender.R.File=console.log
定义日志语句的输出,即代码中的日志语句应该去的位置。 将此输出文件放在类路径中是没有意义的。相反(如果未指定其他路径),文件将写入应用程序的工作目录(当前目录)。