首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

log4j配备相对路径

2012-07-01 
log4j配置相对路径log4j相对路径的配置 从网上简单搜索了一下,发现有三种介绍的方法。总结在这里:1,主要是

log4j配置相对路径
log4j相对路径的配置

从网上简单搜索了一下,发现有三种介绍的方法。总结在这里:

1,主要是扩展了log4j的RollingFileAppender类,其他的FileAppender同样道理。扩展的方法,就是用一个子类去覆盖setFile方法,这个方法在log4j读取配置文件生成appender的时候调用,传入的就是配置文件中的路径,这样我就可以按照自己的想法在路径前面加上根路径了。这种方法可以在log4j.properties中用相对路径自由配置log4j.appender.appenderName.File属性来决定生成的日志相对web应用根目录的位置。

2,是利用服务器vm中已经存在的环境变量如${catalina.home}来设置相对于${catalina.home}的日志路径,日志只能放到服务器子目录里,而且如果是用的其它服务器,则要改对应的环境变量。此方法平台移植不方便。

3,利用spring加载log4j.properties,如果加载不到就往控制台打log信息。Spring提供了 一个Log4jConfigListener,本身就能通过web.xml中配置来指定位置加载log4j配置文件和log输出路径,注意该 listener需要放在spring的Listener之前。

事实上,Log4jConfigListener更适合log4j在web工程中使用,原因如下:
(1). 动态的改变记录级别和策略,不需要重启Web应用。
(2). 把log文件定在 /WEB-INF/logs/ 而不需要写绝对路径。
因为 系统把web目录的路径压入一个叫webapp.root的系统变量。这样写log文件路径时不用写绝对路径了.
log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/settlement.log
(3). 可以把log4j.properties和其他properties一起放在/WEB-INF/ ,而不是Class-Path。
(4). log4jRefreshInterval为60000表示 开一条watchdog线程每60秒扫描一下配置文件的变化;
在web.xml 添加
<context-param>   
        <param-name>log4jConfigLocation</param-name>   
        <param-value>WEB-INF/log4j.properties</param-value>   

</context-param>      
<context-param>   
        <param-name>log4jRefreshInterval</param-name>   
        <param-value>60000</param-value>   
</context-param>
        <listener>   
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>   

</listener>

log4j文件路径配置如下:
log4j.appender.appendrName.File=${webapp.root}/WEB-INF/logs/settlement.log



热点排行