概述
日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到。对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题。除此之外,处理一个单个的庞大日志文件也常常是件十分棘手的事。
logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。例如,你可以设置logrotate,让/var/log/foo日志文件每30天轮循,并删除超过6个月的日志。配置完后,logrotate的运作完全自动化,不必进行任何进一步的人为干预。
因为服务器比较多,所以简单写了个shell脚本来直接配置logrotate。
logrotate配置文件说明
Logrotate的记录日志
logrotate自身的日志通常存放于/var/lib/logrotate/status目录。如果处于排障目的,我们想要logrotate记录到任何指定的文件,我们可以指定像下面这样从命令行指定。
[root@clsn6 ~]# logrotate -vf -s /var/log/logrotate-status /etc/logrotate.d/log-file
tomcat设置自动切割
对于catalina,localhost,manager,host-manager这四类日志,使用tomcat 8.5.24版本后新添加的maxDays属性进行管理。打开日志配置,将日志配置为3天后自动删除
#vim $tomcat/conf/logging.properties
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 3
2localhost.org.apache.juli.AsyncFileHandler.maxDays = 3
3manager.org.apache.juli.AsyncFileHandler.maxDays = 3
4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 3
对于catalina.out标准输入输出日志,使用linux自带的logrotate进行管理。将日志配置为3天后自动删除
#vim /etc/logrotate.d/tomcat
$tomcat/logs/catalina.out {
daily #logrotate周期
rotate 3 #保存多久
missingok
notifempty #如果是空文件的话,不转储
compress
}
shell脚本配置tomcat自动切割
1、脚本内容
#!/bin/bash
#copyright by hwb --2019/7/12
tomcat=/home/tomcat8052
#配置catalina,localhost,manager,host-manager日志保留3天
cat << EOF >> $tomcat/conf/logging.properties
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 3
2localhost.org.apache.juli.AsyncFileHandler.maxDays = 3
3manager.org.apache.juli.AsyncFileHandler.maxDays = 3
4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 3
EOF
#logrotate配置3天
cat << EOF >> /etc/logrotate.d/tomcat
$tomcat/logs/catalina.out {
copytruncate
daily
rotate 3
missingok
}
EOF
echo "=======配置catalina,localhost,manager,host-manager日志保留3天========="
cat $tomcat/conf/logging.properties |grep maxDays
echo "=================logrotate配置catalina.out保留3天====================="
cat /etc/logrotate.d/tomcat
2、执行脚本
执行脚本会去配置logrotate
3、测试lorotate功能
# logrotate -d /etc/logrotate.conf
测试成功。