概述
日志文件包含了關於系統中發生的事件的有用信息,在排障過程中或者系統性能分析時經常被用到。對於忙碌的服務器,日志文件大小會增長極快,服務器會很快消耗磁盤空間,這成了個問題。除此之外,處理一個單個的龐大日志文件也常常是件十分棘手的事。
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

測試成功。