最近遇到了一个问题,就是tomcat的catalina.out的日志太大了,每天都有3.4个G的日志文件,于是想更改一下日志配置,缩小日志量,下面是处理过程中遇到的问题和一些解决方法
修改tomcat的logging.properties配置文件,提高日志输出级别
排查的时候发现日志中有很多的debug信息,该类调试信息较多且可以忽略,所以当时第一反应是提高一下tomcat的日志输出级别,将无用日志过滤掉;而tomcat的日志配置文件即为logging.properties,所以需要先了解一下tomcat的日志相关设定
参考资料:
Tomcat日志设定:https://blog.csdn.net/lk_cool/article/details/4561306
Access Log doc:http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html
解决catalina.out不断成长问题:https://blog.csdn.net/weixin_36586564/article/details/78550110
日志切割:
https://www.iyunv.com/forum.php?mod=viewthread&tid=404484&highlight=tomcat%2B
tomcat 日志禁用 :
https://www.iyunv.com/forum.php?mod=viewthread&tid=348904&highlight=tomcat%2B
tomcat日志设定
tomcat的日志分为两类
- 一类是运行日志,它主要记录运行的一些信息,尤其是一些异常 错误 日志信息
- 一类是访问日志,它主要记录一些访问信息,比如时间、IP、访问的资料等相关信息
tomcat的日志配置
- 访问日志的配置
默认tomcat不记录访问日志,需要修改server.xml文件来手动打开
编辑 $1 {catalina}/conf/server.xml 文件
把以下的注释 (<!-- -->) 去掉即可。
<!--
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
-->
打开之后,tomcat的logs(directory项所配置的路径)文件夹中,会生成对应的localhost_access_log日志文件
另外可通过pattern项来配置日志输出格式
该项值可以为: common 与 combined ,这两个 预 先 设 置好的 格式对应的日志输出内容如下:
- common 的值: %h %l %u %t %r %s %b
- combined 的值: %h %l %u %t %r %s %b %{Referer}i %{User-Agent}i
pattern 也可以根据需要自由组合 , 例如 pattern="%h %l"
对于各 fields 字段的含义请参照 :
http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html 中的 Access Log Valve 项
- 运行日志配置
日志的级别与类型
Tomcat 日志分为下面5类:
- catalina
- localhost
- manager
- admin
- host-manager
每类日志的级别分为如下 7 种:
SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value)
日志级别的设定方法
修改 conf/logging.properties 中的内容,设定某类日志的级别
1catalina.org.apache.juli.FileHandler.level = WARNING
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
将level级别设置成WARNING就可以大量减少日志的输出,当然也可以设置成OFF,直接禁用掉。
另外,除了修改日志级别,还可以对日志文件进行切分
日志切割:
https://www.iyunv.com/forum.php?mod=viewthread&tid=404484&highlight=tomcat%2B
tomcat 日志禁用 :
https://www.iyunv.com/forum.php?mod=viewthread&tid=348904&highlight=tomcat%2B
修改log4j(应用日志)输出配置
修改tomcat的日志级别为WARNING后,发现catalina.out中的日志输出依旧很多,后发现,catalina.out会记录 System.out 与 System.err的信息,而应用的log4j日志有一些是会输出到控制台,那么就不能只修改logging.properties,也需要修改log4j的日志级别,使catalina.out中不再记录应用的日志
参考资料
解决catalina.out不断成长问题:
https://blog.csdn.net/weixin_36586564/article/details/78550110
Log4j具体输出信息级别配置方法
https://blog.csdn.net/hamov/article/details/51673875
将ConsoleAppender的级别调高
log4j日志输出级别
- ALL
- DEBUG
- INFO
- WARN
- ERROR
Log4j具体输出信息级别配置方法:
http://blog.csdn.net/hamov/article/details/51673875
如果使用的是logback,可以参考:
https://blog.csdn.net/weixin_36586564/article/details/78550110
tomcat日志配置与log4j的日志配置改完之后,一般就可以了,另外也有说logback的jar包和log4j的jar包冲突会导致日志配置失效,但还没有亲自验证,等搞清楚了再来补充 -.-
参考资料
log4j与logback冲突的解决与思考:https://blog.csdn.net/u012501054/article/details/88802859
小结
参考资料汇总
Tomcat日志设定:https://blog.csdn.net/lk_cool/article/details/4561306
Access Log doc:http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html
解决catalina.out不断成长问题:https://blog.csdn.net/weixin_36586564/article/details/78550110
日志切割:
https://www.iyunv.com/forum.php?mod=viewthread&tid=404484&highlight=tomcat%2B
tomcat 日志禁用 :
https://www.iyunv.com/forum.php?mod=viewthread&tid=348904&highlight=tomcat%2B
Log4j具体输出信息级别配置方法
https://blog.csdn.net/hamov/article/details/51673875
${catalina} 是 tomcat 的安装目录 ↩︎