配置Log4j属性路径的最佳实践
我在我的应用程序中使用Log4j。 log4j.properties
放置在类路径中的Jar中。 正在使用此配置文件,并且大多数时候都可以正常工作。
但有时,生成的日志记录语句不符合配置文件。
我的理解是,这是因为属性文件是从类路径中获取的。 无论第一个属性文件是什么,都是由log4j提取和使用的。 因此,有时我们会使日志语句与属性文件中配置的日志语句不同。
如果上述原因是正确的,那么我认为,我们需要通过以下方式之一具体指定配置文件:
- 使用系统属性指定:-Dlog4j.configuration = log4j.properties
- 初始化Log4jInit servlet。
请建议哪种方法更好。
在我的应用程序中,我使用${user.home}
目录存储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 );
另见
- 有效的日志记录实践可以简化企
- Log4j最佳实践
在类路径上搜索项目时,将使用具有匹配名称的文件的第一个实例。 所以将.jar添加到前面。
set CLASSPATH=myfile.jar;%CLASSPATH%