log4j的日志找不到?

很多项目都用 Log4j 工具包记录日志,启动的时候也许你不会注意你的日志记哪了。

重装了下机器,把 Eclipse 升了一下,重新打项目,启动,发现很多 log4j 的错,报 file not found.
比较老的版本里面基本都是 {tocmat目录}/logs/mylog下,在 tocmat 的安装目录下建一个 logs/mylog 就能搞定,现在建了发现还是报。

然后发现 eclipse 把 tomcat 自动搭到 workbase 里面去了,在相应目录建了一个,还是报,郁闷!

先看一下:我的 log4j.properties 配置如下

1
log4j.appender.mylog.File=../logs/mylog/mylog.log

由于 logs 是每个 tomcat 都有的,所以改为 ../logs/mylog.log,再试,发现还是 file not found。
应该是 eclipse 自动换到运行环境了,再改为

1
log4j.appender.mylog.File=mylog.log

启动,果然没有报错。于是找这个文件,在 jre,workbase,tomcat,eclipse等地方找了下,发现它居然躲在 d:/tool/eclpse(我的解压目录)下面,不知是eclipse没有搞好还是log4j没搞好,还原文件,建了 d:/logs/mylog后果然就可以了,日志也对应在那。

可是,我想开发和产品都一样,让日志在 tomcat 的 logs 下面,该当如何呢,tomcat 启动会有一些 tomcat 本身的变量在里面,catalina.base 就是 catalina 的启动目录,于是改下配置,就可以兼容了,如下

1
log4j.appender.mylog.File=${catalina.base}/logs/mylog/mylog.log

每台机的环境不一样,建议使用环境变量的方式,这样的话,发布出去也能少点问题。