最近发现公司新上项目中Tomcat下catlina.out日益增大,短短几天已有54M.这样大日志看起来不方便,一次打开也花一分钟多,直接cat要滚掉好多屏,切割起来又麻烦.想办法用日期来分割日志,即每天新建一个日志文件.
查阅了下资料:
Cataline引擎的日志文件,文件名catalina.日期.log
Tomcat下内部代码丢出的日志,文件名localhost.日期.log
(jsp页面内部错误的异常,org.apache.jasper.runtime.HttpJspBase.service类丢出的,
日志信息就在该文件!)
Tomcat下默认manager应用日志,文件名manager.日期.log
控制台输出的日志,Linux下默认重定向到catalina.out
Access日志(Servlet.xml配置)
应用程序通过log4j.properties:${catalina.base}/logs/probe.log重定向过来的日志
我最初的想法是用通过Log4j,想不通过在Class文件中手工调用infor(),warn()等方法来记录日志.假如应用程序发生异常,原本打印在控制台的异常信息会自动记录到日志.查理一天以后放弃了.查手册发现异常是在System.error里.日志是在System.out里.
现在的需求变为使catalina.out按日志分割.这里需要借助一款工具cronolog
使用SSH登录服务器,键入以下命令:
# wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
# tar zxvf cronolog-1.6.2.tar.gz
# cd cronolog-1.6.2
# ./configure
# make
# make install
然后修改 catalina.sh
org.apache.catalina.startup.Bootstrap “$@” start / >> “$CATALINA_BASE”/logs/catalina.out 2>&1 &
为
org.apache.catalina.startup.Bootstrap “$@” start 2>&1 / | /usr/local/sbin/cronolog “$CATALINA_BASE”/logs/catalina.%Y-%m-%d.out >> /dev/null &
注释掉
touch “$CATALINA_BASE”/logs/catalina.out
这行.
然后重启服务器就可以了.