配置Log4j属性路径的最佳实践

San*_*dal 5 java configuration logging log4j java-ee

我在我的应用程序中使用Log4j.log4j.properties放在类路径中的Jar中.正在使用此配置文件,并且大多数时候都可以正常工作.

但有时,生成的日志记录语句不符合配置文件.

我的理解是,这是因为属性文件是从类路径中获取的.无论第一个属性文件是什么,都是由log4j提取和使用的.因此,有时我们会使日志记录语句与属性文件中配置的不同.

如果上述原因属实,那么我认为,我们需要通过以下方式之一具体指定配置文件:

  1. 使用系统属性指定:-Dlog4j.configuration = log4j.properties
  2. 初始化Log4jInit servlet.

请建议哪种方法更好.

Jig*_*shi 6

在我的应用程序中,我使用${user.home}dir来存储log4j.properties和使用我们正在阅读的蚂蚁.它将与平台无关.你也可以在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 );
Run Code Online (Sandbox Code Playgroud)

另见