我在我的应用程序中使用Log4j。 log4j.properties
放在类路径中的Jar中。正在使用此配置文件,并且大多数时候都可以正常工作。
但有时,生成的日志记录语句不符合配置文件。
我的理解是,这是因为属性文件是从类路径中获取的。无论第一个属性文件是什么,都是由log4j提取和使用的。因此,有时我们会使日志语句与属性文件中配置的日志语句不同。
如果上述原因属实,那么我认为,我们需要通过以下方式之一具体指定配置文件:
请建议哪种方式更好。
答案 0 :(得分:6)
在我的应用程序中,我使用${user.home}
dir存储log4j.properties
并使用ant我们正在阅读它。它将与平台无关。你也可以在classpath中传递一个,但是从$ {user.home}读取更好的方法,你或任何非技术人员都可以轻松访问它。
你也可以使用
动态日志文件位置
许多人抱怨Log4j强迫您对保存日志的位置进行硬编码。实际上,可以动态选择日志文件位置,特别是如果您使用上面的$ {log.dir}属性替换技术。方法如下:
String dynamicLog = // log directory somehow chosen...
Properties p = new Properties( Config.ETC + "/log4j.properties" );
p.put( "log.dir", dynamicLog ); // overwrite "log.dir"
PropertyConfigurator.configure( p );
另见
答案 1 :(得分:2)
在类路径中搜索项目时,将使用具有匹配名称的第一个文件实例。所以将.jar添加到前面。
set CLASSPATH=myfile.jar;%CLASSPATH%