Tomcat 中集成 logback
背景
随着 Tomcat 长时间的运行,在其 logs 下面会产生大量的日志文件,但是 Tomcat 本身并未提供日志清理的功能,在一定时间后会占用一定的系统资源,而且该目录下的日志文件并不是十分重要,所以需要一种机制在一定的时机对日志文件进行管理。
方案
脚本 + 定时任务
1 | !/bin/bash |
以上是一个简单的 shell 命令,删除7天前的日志文件,将其保存到 clean_tomcat_log.sh,执行 crontab -e 编辑添加该脚本到定时任务。
logrotate
Logrotate 是 Linux 自带的一个命令工具,一般的服务器都默认安装有。通过简单的配置就可以实现上述脚本的功能,而且还能够保存分割日志。
在 /etc/logrotate.d/ 目录下添加 tomcat-logs 配置文件,文件内容如下:
1 | /the/path/of/logs/*.log /the/path/of/logs/*.txt { |
以上配置可以简单的实现如何管理日志文件,logrotate 还有其他参数,以上只是一个简单的例子。
tomcat-slf4j-logback
该方案通过 Tomcat 结合 logback 可以对 logs 下的日志文件进行管理,这里也推荐使用此方案。
- 首先从官网 [1] 下载 Tomcat 对应版本的文件;
- 将下载的文件替换到 Tomcat 对应目录下,如果没有其他特殊需求,这样就可以发布项目启动Tomcat了;
复制 bin/tomcat-juli.jar 到 $CATALINA_HOME/bin 替换已有的 tomcat-juli.jar
复制 bin/setenv.sh 或者 bin\setenv.bat 到 $CATALINA_HOME/bin 替换已有的 setenv.sh/setenv.bat 脚本(如果 setenv.sh/setenv.bat 脚本有其他自定义参数的设置则只能在源文件基础上进行修改)
复制 conf/logback.xml 到 $CATALINA_HOME/conf
复制 conf/logback-access.xml 到 $CATALINA_HOME/conf(之前老一点的版本是logback-access-localhost.xml)
复制 conf/server.xml 到 $CATALINA_HOME/conf(如果 server.xml 文件有其他内容修改,则需要在源文件上进行修改)
复制 lib/logback-core-1.1.8.jar,lib/logback-access-1.1.8.jar 到 $CATALINA_HOME/lib(如果发布项目也使用了 logback 需要注意统一版本号,以免造成冲突等问题) - 删除 $CATALINA_HOME/conf/logging.properties 文件。以完全关闭 java.util.logging。
- 如果需要手动修改 server.xml 则需要按照以下步骤进行修改:
如果需要添加自定义的配置 logback-access-localhost.xml 则要添加如下内容:PS:如果使用 1.1.7 以上版本的 logback,1
<Valve className="ch.qos.logback.access.tomcat.LogbackValve" quiet="true" filename="${catalina.home}/conf/logback-access-localhost.xml" />
${catalina.home}
可以去掉
如果使用默认的 logback-access.xml 配置文件则添加如下内容:删除以下内容:1
<Valve className="ch.qos.logback.access.tomcat.LogbackValve" quiet="true" />
1
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
至此整个配置过程就结束了,接下来就发布项目,启动 Tomcat 进行测试了。其他一些日志的管理只需要修改 conf/ 下的 logback 配置文件即可。
参考文档
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 JavaHub!
评论