大家一般都在Windows上开发,部署到linux服务器上通常会出现一些路径报错,因为两个操作系统的文件系统不同,不能用绝对路径来定义log4j的输出日志路径.对于相对路径来说,有以下解决方法.
1.日志输出debug级别以上的到stdout(控制台) 和R1(自己随便定义的)
log4j.rootLogger=debug,stdout,R1
2.输出到 盘的 根目录下 (不推荐,win和linux 不同),代码如下:
og4j.appender.R1.File=/log.log
3.项目文件中 (不推荐,容易清理掉)
log4j.appender.R1.File=logs/log.log
4.tomcat系的容器 这种方法不错,切到别的容器就不行了
log4j.appender.R.File=${catalina.home}/logs/log.log
5.在web.xml中添加
<context-param> <param-name>webAppRootKey</param-name> <param-value>webApp.root</param-value> </context-param>
log4j.properties中
log4j.appender.R1.File=${webApp.root}logs/log.log
(这种方法的好处是不区分系统,不区分容器,缺点是会产生垃圾文件,${webApp.root} 在这个被赋值前有段日志不会在你想要的地方,当然妨碍不大,我推荐只用这种方法)
坦白说,我目前没有一个跨操作系统又能解决路径,还能保存好日志文件的完美解决办法.大家*选择吧.