log4j日志文件相对路径怎么设置?logj4日志路径配置文件

发布时间:2019-10-05编辑:脚本学堂
有关log4j日志文件相对路径的配置方法,一个典型的log4j日志配置文件,需要的朋友参考下。

如何解决log4j的日志文件的保存路径问题,这里分享一个配置实例。

应用场景:
一个web项目,使用log4j做日志系统,开发时web容器为jetty,生产环境为tomcat5.5。
classes下定义了log4j.properties:
 

log4j.appender.A2=org.apache.log4j.RollingFileAppender 
log4j.appender.A2.File=${dir}/logs/report.log 
 

一般自定义dir,可以在System中设置dir的值。
如果不是使用java -Ddir=xxx这样方式,则需要在加载log4j.properties之前设置。
一般用Listener,在Listener的init方法中设置。
这种方式在jetty中可行.在tomcat中失败。
这是因为tomcat在启动项目时,会优先加载log4j.properties文件,然后才执行Listener.

参照tomcat在启动项目时,会自动设置环境变量:catalina.base

于是,修改:
 

log4j.appender.A2.File=${catalina.base}/logs/report.log 

然后,在Listener中判断此变量是否存在,存在,表示在tomcat中,不需要再设置,否则,设置路径为项目根路径
 

String key = "catalina.base"; 
if (System.getProperty(key) == null) {//不在tomcat中,需定义 
    String root = ctx.getRealPath("/");//就保存在项目下 
    System.setProperty(key, root); 

 

这样.如果再tomcat中,会保存日志文件到tomcat/logs下.否则保存到webapp/logs下
 
附,一个典型的log4j日志配置文件:
 

log4j.rootLogger=INFO, A1, A2 
 
# A1 is set to be ConsoleAppender sending its output to System.out 
log4j.appender.A1=org.apache.log4j.ConsoleAppender 
log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss} %-5p [%t] (%F:%L) %3x - %m%n 
 
log4j.appender.A2=org.apache.log4j.RollingFileAppender 
log4j.appender.A2.Threshold=INFO 
#log_diru5728AppListeneru4e2du83b7u5f97u5e76u8bbeu7f6eu5982System 
log4j.appender.A2.File=${catalina.base}/logs/web.log 
log4j.appender.A2.Append=true 
log4j.appender.A2.MaxFileSize=100KB 
log4j.appender.A2.layout=org.apache.log4j.PatternLayout 
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5r %-5p [%t] %c{2}:%L - %m%n