一般情况下,log4j的配置文件中写绝对路径,比如下面这样的:
log4j.appender.FILE.File=logfile
日志保存在应用的根下,或者这样:
log4j.appender.FILE.File=d:\\log\\logfile
日志文件保存在d盘根下的log目录下。当然,只能windows用。那么问题来了,如果开发平台和生产平台不一样咋办?
如果能够忍受日志保存在应用的根下,那么直接写上文件名就OK了。如果不呢?比如生产环境是linux,日志想放在/home/log/下呢。
网上找了一些文章来看,我认为下面的方法最简单,这种方法需要用到jvm的系统变量:
1、首先,log4j配置文件重要写上系统变量,比如这样:
log4j.appender.FILE.File=${log4j_root}/logfile
其中log4j_root就是一个jvm的系统变量
2、启动应用时,用下面的命令,比如应用是x.jar:
java -Dlog4j_root=/home/log -jar x.jar
-D参数的作用就是设置一个jvm变量,这里就是将log4j配置文件中引用的jvm变量log4j_root给设置上了。
这种方法在windows上也能用,比如:
java -Dlog4j_root=d:\\log -jar x.jar
注意是两个斜杠,log4j配置文件不用改。
这样的好处吗,个人认为就是开发的代码不用改任何东西就能部署在设备上。部署的时候,编写启动脚本时直接加在启动命令里就行了。