Logrotate實現(xiàn)Catalina.out日志每倆小時切割示例
一.Logrotate工具介紹
Logrotate是一個日志文件管理工具,它是Linux默認(rèn)自帶的一個日志切割工具。用來把舊文件輪轉(zhuǎn)、壓縮、刪除,并且創(chuàng)建新的日志文件。我們可以根據(jù)日志文件的大小、天數(shù)等來轉(zhuǎn)儲,便于對日志文件管理,一般都是通過cron計劃任務(wù)來完成的,讓日志切割實現(xiàn)按小時分割,按天分割等。
二.Logrotate運(yùn)行機(jī)制
系統(tǒng)會定時運(yùn)行l(wèi)ogrotate,一般是每天一次。系統(tǒng)是這么實現(xiàn)按天執(zhí)行的。crontab會每天定時執(zhí)行/etc/cron.daily目錄下的腳本,而這個目錄下有個文件叫l(wèi)ogrotate。
[root@test01 ~]# cat /etc/cron.daily/logrotate #!/bin/sh /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0
實際運(yùn)行時,Logrotate會調(diào)用配置文件/etc/logrotate.conf
三.Logrotate的組成
/usr/sbin/logrotate #程序所在位置;
/etc/cron.daily/logrotate #默認(rèn)讓Cron每天執(zhí)行l(wèi)ogrotate一次;
/etc/logrotate.conf #全局配置文件;
/etc/logrotate.d/ #應(yīng)用自個的配置文件存放目錄,覆蓋全局配置;
注意:logrotate.d 是一個目錄,該目錄里的所有文件都會被主動的讀入/etc/logrotate.conf中執(zhí)行。另外,如果/etc/logrotate.d/里面的文件中沒有設(shè)定一些細(xì)節(jié),則會以/etc/logrotate.conf這個文件的設(shè)定來作為默認(rèn)值。
四.Logrotate的命令格式
logrotate [OPTION...] <configfile>
-d, --debug :debug模式,測試配置文件是否有錯誤。
-f, --force :強(qiáng)制轉(zhuǎn)儲文件。
-m, --mail=command :壓縮日志后,發(fā)送日志到指定郵箱。
-s, --state=statefile :使用指定的狀態(tài)文件。
-v, --verbose :顯示轉(zhuǎn)儲過程。
例如:想強(qiáng)行切割日志文件,不等logrotate切割。
[root@test01 ~]# /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat #我是用來測試用的嘿嘿 注意:CentOS7 命令是在/usr/sbin/里。
五.常用配置參數(shù)說明
Logrotate功能的實現(xiàn),最重要的就是它的配置參數(shù)
下面介紹下它常用的配置參數(shù):
|
compress |
啟用壓縮,指的是輪替后的舊日志,這里默認(rèn)用的是gzip壓縮的 |
|
daily |
每天輪替 |
|
dateext |
使用當(dāng)期日期作為命名格式 |
|
dateformat .%s |
配合dateext使用,緊跟在下一行出現(xiàn),定義文件切割后的文件名,必須配合dateext使用,只支持 %Y %m %d %s 這四個參數(shù) |
|
ifempty |
即使日志文件是空的也輪替 |
|
|
將輪替后的文件發(fā)送到指定E-mail地址 |
|
copytruncate |
用于還在打開中的日志文件,把當(dāng)前日志備份并截斷,是先拷貝再清空的方式,拷貝和清空之間有一個時間差,可能會丟失部分日志數(shù)據(jù)。 |
|
monthly |
一個月輪替一次 |
|
nocompress |
如果在logrotate.conf中啟用了壓縮,這里是做不用壓縮的參數(shù) |
|
nomail |
不發(fā)送郵件到任何地址 |
|
notifempty |
如果日志是空的就不輪替(也就是空日志不切割) |
|
olddir + 目錄 |
輪替后日志文件放入指定的目錄,必須和當(dāng)前日志文件在同一個文件系統(tǒng) |
|
rotate +次數(shù) |
輪替最多保留之前的數(shù)據(jù)幾次,超出的將被刪除或郵件接收,設(shè)為0則不保存 |
|
size size |
當(dāng)日志增長到指定大小的時候開始輪替 |
|
weekly |
如果當(dāng)前的星期幾比上次輪替的星期幾少,或者過了一個多星期,就會發(fā)生輪替通常是在每周的第一天輪替,如果logrotate不是每天運(yùn)行的,會在第一次有機(jī)會時進(jìn)行輪替 |
|
yearly |
如果當(dāng)前年份不同于上次輪替的年份,則進(jìn)行日志輪替 |
|
Missingok |
如果日志丟失,不報錯繼續(xù)滾動下一個日志 |
六.安裝配置Logrotate
#yum安裝下
[root@test01 ~]# yum -y install logrotate
#機(jī)器已經(jīng)裝好tomcat,下面配置切割tomcat日志的配置文件
[root@test01 ~]# vim /etc/logrotate.d/tomcat
注意:logrotate的配置文件是/etc/logrotate.conf,通常不需要對它進(jìn)行修改。
日志文件的切割輪循設(shè)置在獨立的配置文件中,它們是放在/etc/logrotate.d/目錄下的。
[root@test01 ~]# mkdir -p /var/log/tomcat/oldlog
[root@test01 ~]# cat /etc/logrotate.d/tomcat
/usr/local/tomcat8/logs/catalina.out { #要切割的日志路徑,如果是多個就用空格分隔
notifempty #如果日志是空的就不輪替(也就是空日志不切割)
rotate 5000 #輪替最多保留之前的數(shù)據(jù)5000次
missingok #如果日志丟失,不報錯繼續(xù)滾動下一個日志
compress #啟用壓縮,指的是輪替后的舊日志,這里默認(rèn)用的是gzip壓縮的
dateext #使用當(dāng)期日期作為命名格式
dateformat .%Y%m%d-%H點 #配合dateext使用,緊跟在下一行出現(xiàn),定義文件切割后的文件名,必須配合dateext使用,只支持 %Y %m %d %s
olddir /var/log/tomcat/oldlog #輪替后日志文件放入指定的目錄
}
注意:我這個配置里沒有設(shè)置多久切割一次,但是它也是一天切割一次,因為當(dāng)/etc/logrotate.d/tomcat這個文件沒有配置時,默認(rèn)是每天定時執(zhí)行/etc/cron.daily/logrotate這個文件,這個文件是一天一次的。
#強(qiáng)制執(zhí)行切割,查看/var/log/tomcat/oldlog下是否有日志
[root@test01 ~]# /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat reading config file /etc/logrotate.d/tomcat olddir is now /var/log/tomcat/oldlog Allocating hash table for state file, size 15360 B Handling 1 logs rotating pattern: /usr/local/tomcat8/logs/catalina.out forced from command line (5000 rotations) olddir is /var/log/tomcat/oldlog, empty log files are not rotated, old logs are removed considering log /usr/local/tomcat8/logs/catalina.out log needs rotating rotating log /usr/local/tomcat8/logs/catalina.out, log->rotateCount is 5000 Converted ' .%Y%m%d-%H點' -> '.%Y%m%d-%H點' dateext suffix '.20181226-15點' glob pattern '.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9]點' glob finding old rotated logs failed fscreate context set to unconfined_u:object_r:usr_t:s0 renaming /usr/local/tomcat8/logs/catalina.out to /var/log/tomcat/oldlog/catalina.out.20181226-15點 compressing log with: /bin/gzip set default create context to unconfined_u:object_r:usr_t:s0 set default create context
#查看切割結(jié)果

#把之前切割的刪除了,因為再定時切割文件是相同的,還是catalina.out.20181226-15點.gz這個文件,所以不會切割成功。
[root@test01 ~]# rm -rf /var/log/tomcat/oldlog/catalina.out.20181226-15點.gz [root@test01 ~]# ls /var/log/tomcat/oldlog/ [root@test01 ~]#
#設(shè)置定時任務(wù),每一分鐘切割一次(注意:日志里要有內(nèi)容,因為前面定義空的日志文件是不切割的)
[root@test01 ~]# crontab –e */1 * * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat >>/var/log/tomcat/oldlog/cutting.log
#每倆小時切割一次
[root@test02 ~]# crontab -l 0 */2 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat >> /root/chenjiaxin/cutting.log
#查看定時切割的結(jié)果

當(dāng)然,上面設(shè)置一分鐘切割一次,是為了實驗?zāi)鼙M快看到效果。實際是需要根據(jù)公司需要來設(shè)置多久來切割一次日志的!
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在Linux環(huán)境下采用壓縮包方式安裝JDK 13的方法
JDK(Java Development Kit)是Sun公司(后被Oracle收購)推出的面向?qū)ο蟪绦蛟O(shè)計語言的開發(fā)工具包,擁有這個工具包之后我們就可以使用Java語言進(jìn)行程序設(shè)計和開發(fā)。這篇文章主要介紹了在Linux環(huán)境下采用壓縮包方式安裝JDK 13,需要的朋友可以參考下2019-10-10
linux grep查找的結(jié)果中顯示匹配行的上下行內(nèi)容方式
這篇文章主要介紹了linux grep查找的結(jié)果中顯示匹配行的上下行內(nèi)容方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
linux/OSX中“DD”命令制作ISO鏡像操作系統(tǒng)安裝U盤的方法
這篇文章主要介紹了linux/OSX中“DD”命令制作ISO鏡像操作系統(tǒng)安裝U盤的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09
Vscode遠(yuǎn)程連接Ubuntu出錯問題的解決方法
這篇文章主要給大家介紹了關(guān)于Vscode遠(yuǎn)程連接Ubuntu出錯問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
centos7.2搭建LAMP環(huán)境的具體操作方法
下面小編就為大家?guī)硪黄猚entos7.2搭建LAMP環(huán)境的具體操作方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08
淺析Linux中使用nohup及screen運(yùn)行后臺任務(wù)的示例和區(qū)別
這篇文章主要介紹了Linux中使用nohup及screen運(yùn)行后臺任務(wù)的示例和區(qū)別,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07
如何利用Bash腳本監(jiān)控Linux的內(nèi)存使用情況
這篇文章主要給大家介紹了關(guān)于如何利用Bash腳本監(jiān)控Linux的內(nèi)存使用情況的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用linux具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
Apache Flink 任意 Jar 包上傳導(dǎo)致遠(yuǎn)程代碼執(zhí)行漏洞復(fù)現(xiàn)問題(漏洞預(yù)警)
這篇文章主要介紹了Apache Flink 任意 Jar 包上傳導(dǎo)致遠(yuǎn)程代碼執(zhí)行漏洞復(fù)現(xiàn)問題,本文給出了修復(fù)建議和解決方案,需要的朋友可以參考下2019-11-11

