Log4j 日志文件存放位置设置

以DailyRollingFileAppender 为例:假设每天一个日志文件

有以下设置:

log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender 

log4j.appender.A1.File=app.log

log4j.appender.A1.DatePattern='.'yyyy-MM-dd

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern=%d %5p - %c -%-4r [%t]    - %m%n

经过自己测试,无法找到app.log文件  

如要将日志文件保存在 :根目录/web-info/logs/下,个人有以下4种解决方案:

1 绝对路径

log4j.appender.A1.File=D:\apache-tomcat-6.0.18/webapps/项目/WEB-INF/logs/app.log

但这种写法灵活性很差

以下3中使用相同的设置原理: jvm的环境变量

2:spring的Log4jConfigListener

通过以下配置

public class log4jlistener implements ServletContextListener {  
    public static final String log4jdirkey = "log4jdir";  
    public void contextDestroyed(ServletContextEvent servletcontextevent) {  
        System.getProperties().remove(log4jdirkey);  
    }  
    public void contextInitialized(ServletContextEvent servletcontextevent) {  
    String log4jdir = servletcontextevent.getServletContext().getRealPath("/");  
    //System.out.println("log4jdir:"+log4jdir);  
    System.setProperty(log4jdirkey, log4jdir);  
    }  
}  

web.xml配置:

<listener>  
    <listener-class>com.log4j.log4jlistener</listener-class>  
</listener>  

log4j.prtperties 配置:

log4j.appender.A1.File=${log4jdir}/WEB-INF/logs/app1.log 来解决。

相关推荐