linux日志切割工具 logrotate


centos-7.6系統默認安裝logrotate,默認的配置文件:

/etc/logrotate.conf
/etc/logrotate.d/
logrotate.conf:為主配置文件
logrotate.d:為配置相關子系統,用於隔離每個應用配置(Nginx、PHP、Tomcat...)
用於解決個別日志文件過大,不易清理及查看
以haproxy 為例

cat /etc/logrotate.d/haproxy 
/var/log/haproxy/haproxy.log {  
#文件絕對路徑,nginx日志亦同上
   daily
#指定轉儲周期為每天
   rotate 20
#保留20天的日志
   missingok
#如果日志文件丟失,不進行顯示錯誤
   notifempty
#當日志文件為空時,不進行轉儲
   dateext
#加上日志格式
   compress
#通過gzip壓縮轉儲后的日志
   sharedscripts
#轉儲完成后運行腳本,postrotate-endscript間為腳本內容,腳本效果為重啟rsyslogd服務。
   postrotate
       systemctl restart  rsyslog.service
   endscript
}

測試配置文件
logrotate -d /etc/logrotate.d/haproxy
該服務由anacron調用
anacron默認配置如下
修改該服務的調用時間

cat /etc/anacrontab 
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
#默認為3點到22點隨機延遲45分鍾執行,修改為3點到5點
START_HOURS_RANGE=3-5

#period in days   delay in minutes   job-identifier   command
1	5	cron.daily		nice run-parts /etc/cron.daily
7	25	cron.weekly		nice run-parts /etc/cron.weekly
@monthly 45	cron.monthly		nice run-parts /etc/cron.monthly

效果如下

-rw-------  1 root   root     3030916 Jul  1 03:48 haproxy.log-20190701.gz
-rw-------  1 root   root     3870655 Jul  2 03:24 haproxy.log-20190702.gz
-rw-------  1 root   root     4569410 Jul  3 03:39 haproxy.log-20190703.gz
-rw-------  1 root   root     3715970 Jul  4 03:33 haproxy.log-20190704.gz

Logrotate中其他可配置參數,具體如下:

compress //通過gzip 壓縮轉儲以后的日志
nocompress //不做gzip壓縮處理
copytruncate //用於還在打開中的日志文件,把當前日志備份並截斷;是先拷貝再清空的方式,拷貝和清空之間有一個時間差,可能會丟失部分日志數據。
nocopytruncate //備份日志文件不過不截斷
create mode owner group //輪轉時指定創建新文件的屬性,如create 0777 nobody nobody
nocreate //不建立新的日志文件
delaycompress //和compress 一起使用時,轉儲的日志文件到下一次轉儲時才壓縮
nodelaycompress //覆蓋 delaycompress 選項,轉儲同時壓縮。
missingok //如果日志丟失,不報錯繼續滾動下一個日志
errors address //專儲時的錯誤信息發送到指定的Email 地址
ifempty //即使日志文件為空文件也做輪轉,這個是logrotate的缺省選項。
notifempty //當日志文件為空時,不進行輪轉
mail address //把轉儲的日志文件發送到指定的E-mail 地址
nomail //轉儲時不發送日志文件
olddir directory //轉儲后的日志文件放入指定的目錄,必須和當前日志文件在同一個文件系統
noolddir //轉儲后的日志文件和當前日志文件放在同一個目錄下
sharedscripts //運行postrotate腳本,作用是在所有日志都輪轉后統一執行一次腳本。如果沒有配置這個,那么每個日志輪轉后都會執行一次腳本
prerotate //在logrotate轉儲之前需要執行的指令,例如修改文件的屬性等動作;必須獨立成行
postrotate //在logrotate轉儲之后需要執行的指令,例如重新啟動 (kill -HUP) 某個服務!必須獨立成行
daily //指定轉儲周期為每天
weekly //指定轉儲周期為每周
monthly //指定轉儲周期為每月
rotate count //指定日志文件刪除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份
dateext //使用當期日期作為命名格式
dateformat .%s //配合dateext使用,緊跟在下一行出現,定義文件切割后的文件名,必須配合dateext使用,只支持 %Y %m %d %s 這四個參數
size(或minsize) log-size //當日志文件到達指定的大小時才轉儲,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem).
當日志文件 >= log-size 的時候就轉儲。 以下為合法格式:(其他格式的單位大小寫沒有試過)
size = 5 或 size 5 (>= 5 個字節就轉儲)
size = 100k 或 size 100k
size = 100M 或 size 100M

參考:https://www.linuxidc.com/Linux/2019-02/157099.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM