This is my Blog!!Welcome to you!!
【分享个人java学习心得和技术问题汇总】

log4j中日志输出文件指定相对路径的方法

log4j中日志输出文件指定相对路径的方法

1.设置在 C:/log/error.log

 

第一步,首先要定义系统变量

这里说的系统变量也就是System.getProperty(..)方法可以得到的变量,比如说user.dir等与操作系统相关的变量会默认加载进来。

另外,利用启动参数-D也可以手动加入系统参数,比如我们可以指定日志路径-Dlog.path=”D:/abc/log”。当然,这样写成绝对路径又不灵活了。

其实我们可以在系统启动时在程序初始化的时候来动态选择路径,然后System.setProperty(..),那就万无一失了~

2.设置在tomcat下面(主要推荐是这种)

第二步,在log4j配置文件中使用系统变量

如何使用呢?比如我们在系统变量中定义了一个log.path,那么使用时只需要${log.path}就可以得到该属性对应的value值了

需要注意的是,若你使用的是tomcat,那么默认就可以使用${catalina.home}来得到tomcat的根目录

这种方式的原理是为log4j中配置的路径动态地添加上当前项目的根路径。

在Spring工程中一般都使用org.springframework.web.util.Log4jConfigListener这个类来加载log4j的配置文件

当然底层还是调用PropertyConfigurator.configure(url);或是DOMConfigurator.configure(url);

但是貌似这个配置文件加载之后是无法读取配置,更无法修改单个配置属性,那其实我们就需要在设置到log4j之前来修改某个值了

所以使用这种方式就必须自己定义加载log4j配置文件,思路也比较简单,比如我们用properties文件,在properties指定的输出路径我们只给定相对于项目根路径的相对路径,而项目根路径我们在程序中动态地获取。先将文件加载到Properties,之后通过组装项目根路径以及相对路径并通过set方法来改变log4j.appender.E.File的值,然后再通过PropertyConfigurator.configure(Properties properties)配置到log4j中

之后在web.xml中配置好init-parameter并将该servlet的load-on-startup设置为1就可以了~

未经允许不得转载:Java学习 » log4j中日志输出文件指定相对路径的方法

分享到:更多 ()