logrotate 是操作系統(tǒng)用來管理日志的工具,支持日志的切割蝠嘉、壓縮缴允、清理以及郵件報(bào)警等询一,通過 crontab 服務(wù)定時(shí)運(yùn)行,也可以用這個(gè)工具來管理我們自己的服務(wù)日志,只需要簡(jiǎn)單配置下配置文件即可
logrotate 配置
helloworld.conf
健蕊,多份日志可以直接寫在一個(gè)配置文件里面菱阵,也可以分成多個(gè)文件 include
進(jìn)來
/path/to/log/hello.log
/path/to/log/world.err
{
hourly
rotate 24
notifempty
nocompress
missingok
copytruncate
dateext
dateformat .%Y%m%d%H
olddir /path/to/log/bk/
postrotate
echo "update to aws s3"
endscript
}
-
hourly
: 日志切割按照小時(shí)來切割,logrotate 3.9.0 以后版本才支持缩功,但是其實(shí)真正的調(diào)度是在 crontab 里面配置的 -
rotate
: 保留多少個(gè)歷史文件 -
notifempty
: 如果文件為空晴及,則不切分文件,默認(rèn)是ifempty
-
nocompress
: 不壓縮文件 -
missingok
: 忽略文件缺失信息 -
copytruncate
: 創(chuàng)建一個(gè)日志的拷貝嫡锌,并且截?cái)嗬系娜罩韭羌冢m合那種一直寫一個(gè)文件,也不關(guān)閉的服務(wù)势木。由于這個(gè)階段的過程會(huì)有一小段時(shí)間蛛倦,可能會(huì)有數(shù)據(jù)丟失 -
dateext
: 使用日期后綴 -
dateformat
: 日期后綴的格式 -
olddir
: 備份目錄 -
postrotate/endscript
: 切割后執(zhí)行的命令,這個(gè)選項(xiàng)非常靈活啦桌,可以實(shí)現(xiàn)一些強(qiáng)大的功能溯壶,比如日志上傳,日志分析等等
運(yùn)行
直接執(zhí)行 logrotate -f helloworld.conf
可以強(qiáng)制執(zhí)行切割甫男,測(cè)試是否生效
加入到 crontab
上面測(cè)試沒有問題之后且改,crontab -e
加入到 crontab 里面即可
59 * * * * /path/to/logrotate /path/to/helloworld.conf >/dev/null 2>&1
參考鏈接
- logrotate man: https://linux.die.net/man/8/logrotate
- logrotate 日期后綴支持小時(shí): https://stackoverflow.com/questions/31132995/logrotate-dateformat-seems-not-supporting-hms
轉(zhuǎn)載請(qǐng)注明出處
本文鏈接:http://www.hatlonely.com/2018/04/16/linux-%E6%97%A5%E5%BF%97%E7%AE%A1%E7%90%86%E6%9C%8D%E5%8A%A1-logrotate/