前言
supervisor標(biāo)準(zhǔn)輸出是單個(gè)日志文件,logrotate是linux自帶(如果沒有就自己安裝)的日志切割神器(日志輪轉(zhuǎn)工具,可以自動(dòng)對(duì)日志文件提供截?cái)?、壓縮以及輪轉(zhuǎn)的功能)
配置logrotate
vi /etc/logrotate.d/supervisor
##內(nèi)容長(zhǎng)這樣
/var/log/supervisor_log/*.log { #這一行是說明日志的位置
missingok #如果日志丟失,不報(bào)錯(cuò)繼續(xù)滾動(dòng)下一個(gè)日志
daily #指定轉(zhuǎn)儲(chǔ)周期為每天
rotate 30 #指定日志文件刪除之前轉(zhuǎn)儲(chǔ)的次數(shù),0 指沒有備份,30 指保留30 個(gè)備份
dateyesterday #用昨天時(shí)間來創(chuàng)建日志格式
copytruncate #用于還在打開中的日志文件,把當(dāng)前日志備份并截?cái)?;是先拷貝再清空的方式,拷貝和清空之間有一個(gè)時(shí)間差,可能會(huì)丟失部分日志數(shù)據(jù)
notifempty #當(dāng)日志文件為空時(shí),不進(jìn)行輪轉(zhuǎn)
nocompress #不做gzip壓縮處理
dateext #使用當(dāng)期日期作為命名格式
}
## 保存之后進(jìn)行debug模式強(qiáng)制轉(zhuǎn)儲(chǔ)就可以看到生成了
logrotate -d -f /etc/logrotate.d/supervisor
# 如果已有日志文件的話,那么下面這條命令就可以看到以日期為結(jié)尾的日志文件了
ls /var/log/supervisor_log/
logrotate相關(guān)命令和配置參數(shù)詳解
logrotate命令格式:
logrotate [OPTION...] <configfile>
-d, --debug :debug模式,測(cè)試配置文件是否有錯(cuò)誤。
-f, --force :強(qiáng)制轉(zhuǎn)儲(chǔ)文件。
-m, --mail=command :壓縮日志后,發(fā)送日志到指定郵箱。
-s, --state=statefile :使用指定的狀態(tài)文件。
-v, --verbose :顯示轉(zhuǎn)儲(chǔ)過程。
# 其他重要參數(shù)說明
compress 通過gzip 壓縮轉(zhuǎn)儲(chǔ)以后的日志
nocompress 不做gzip壓縮處理
copytruncate 用于還在打開中的日志文件,把當(dāng)前日志備份并截?cái)?;是先拷貝再清空的方式,拷貝和清空之間有一個(gè)時(shí)間差,可能會(huì)丟失部分日志數(shù)據(jù)。
nocopytruncate 備份日志文件不過不截?cái)?create mode owner group 輪轉(zhuǎn)時(shí)指定創(chuàng)建新文件的屬性,如create 0777 nobody nobody
nocreate 不建立新的日志文件
delaycompress 和compress 一起使用時(shí),轉(zhuǎn)儲(chǔ)的日志文件到下一次轉(zhuǎn)儲(chǔ)時(shí)才壓縮
nodelaycompress 覆蓋 delaycompress 選項(xiàng),轉(zhuǎn)儲(chǔ)同時(shí)壓縮。
missingok 如果日志丟失,不報(bào)錯(cuò)繼續(xù)滾動(dòng)下一個(gè)日志
errors address 專儲(chǔ)時(shí)的錯(cuò)誤信息發(fā)送到指定的Email 地址
ifempty 即使日志文件為空文件也做輪轉(zhuǎn),這個(gè)是logrotate的缺省選項(xiàng)。
notifempty 當(dāng)日志文件為空時(shí),不進(jìn)行輪轉(zhuǎn)
mail address 把轉(zhuǎn)儲(chǔ)的日志文件發(fā)送到指定的E-mail 地址
nomail 轉(zhuǎn)儲(chǔ)時(shí)不發(fā)送日志文件
olddir directory 轉(zhuǎn)儲(chǔ)后的日志文件放入指定的目錄,必須和當(dāng)前日志文件在同一個(gè)文件系統(tǒng)
noolddir 轉(zhuǎn)儲(chǔ)后的日志文件和當(dāng)前日志文件放在同一個(gè)目錄下
sharedscripts 運(yùn)行postrotate腳本,作用是在所有日志都輪轉(zhuǎn)后統(tǒng)一執(zhí)行一次腳本。如果沒有配置這個(gè),那么每個(gè)日志輪轉(zhuǎn)后都會(huì)執(zhí)行一次腳本
prerotate 在logrotate轉(zhuǎn)儲(chǔ)之前需要執(zhí)行的指令,例如修改文件的屬性等動(dòng)作;必須獨(dú)立成行
postrotate 在logrotate轉(zhuǎn)儲(chǔ)之后需要執(zhí)行的指令,例如重新啟動(dòng) (kill -HUP) 某個(gè)服務(wù)!必須獨(dú)立成行
daily 指定轉(zhuǎn)儲(chǔ)周期為每天
weekly 指定轉(zhuǎn)儲(chǔ)周期為每周
monthly 指定轉(zhuǎn)儲(chǔ)周期為每月
rotate count 指定日志文件刪除之前轉(zhuǎn)儲(chǔ)的次數(shù),0 指沒有備份,5 指保留5 個(gè)備份
dateext 使用當(dāng)期日期作為命名格式
dateformat .%s 配合dateext使用,緊跟在下一行出現(xiàn),定義文件切割后的文件名,必須配合dateext使用,只支持 %Y %m %d %s 這四個(gè)參數(shù)
size(或minsize) log-size 當(dāng)日志文件到達(dá)指定的大小時(shí)才轉(zhuǎn)儲(chǔ),log-size能指定bytes(缺省)及KB (sizek)或MB(sizem).
個(gè)人筆記和實(shí)踐