debian使用 Logrotate 來切割日誌
前言, 之前修改了mysql.cnf, 導致日誌轉儲每天會報錯並且增加一條mail數據. 於是修改了下logrotate來避免, 順便看了下man
1. install && configurate
絕大多數linux都默認安裝了logrotate,
配置文件分散了下, 和mysql, apache, nginx之類的程序一樣, 採用了主配置文件
/etc/logrotate.conf 以及 子配置文件/etc/logrotate.d/*.conf
同時, logrotate默認是放在了/etc/cron.daily/logrotate來讓cron每天執行
2. 配置解析
以/etc/logrotate.conf爲例, #爲註釋
# see "man logrotate" for details
# rotate log files weekly
weekly #weekly爲每週處理, 可用daily, monthly,來指定轉儲週期爲每天,每月
# keep 4 weeks worth of backlogs
rotate 4 #指定日誌文件刪除前轉儲的次數, 0 沒有備份, 4指保留4個備份
# create new (empty) log files after rotating old ones
create #轉儲文件, 使用指定的文件模式來創建新的日誌文件, 比如create 0640 mysql mysql 表明以mysql用戶和組來創建權限640的日誌文件.
# uncomment this if you want your log files compressed
#compress #是否啓用gzip壓縮轉儲以後的日誌, 註釋後=nocompress, 默認是不壓縮
#delaycompress #和compress一起使用, 轉儲的日誌文件到下一次轉儲才壓縮, 也就是如果按照每天轉儲日誌, 要第三天的日誌文件才壓縮. 這樣就方便前一天的日誌可以直接被tail, cat而不需要gzip解壓.
#compresscmd /bin/tar #配合compress, 指定壓縮工具的執行路徑
#compressext .gz #配合compress, 指定採用別的日誌轉儲壓縮方式的後綴, 比如要用bzip, tar.gz
#size 10k #超過多少k後啓用一次轉儲, 也就是說如果設置的是每天轉儲, 如果一天有29k, 那麼會生成2個轉儲日誌. 並且按照最新的序號最小來命名.
#ifempty #即使是空文件也轉儲, 默認值, 如果需要忽略空日誌文件, 用notifempty
#dateext #增加日誌的時間戳, 默認是沒有添加的, 加上後在轉儲日誌上加"-YYYMMDD"格式的日期, 不配置則是一個".數字序號"
#dateformat #配合上面使用, 來自定義日誌的後綴日期格式, 比如dateformat -%Y%m%d.%s
# packages drop log rotation information into this directory
include /etc/logrotate.d #包含的子配置
# no packages own wtmp, or btmp -- we'll rotate them here
# 下面是一個wtmp的例子,
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
# 下面是一個btmp的例子
/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}
# system-specific logs may be configured here