1. 程式人生 > >logrotate日誌轉儲

logrotate日誌轉儲

dal -- 作用 sta app ons In 拷貝 如果

1 工具目錄

linux默認會安裝logrotate工具,自身的boot.log就是通過它分割轉儲的。

[root@webmaster log]# ll| grep boot 
-rw-------. 1 root   root         0 Jun 25 03:33 boot.log
-rw-------. 1 root   root     81499 Jun 23 03:20 boot.log-20180623
-rw-------. 1 root   root     28340 Jun 24 03:38 boot.log-20180624
-rw-------. 1 root   root         0 Jun 25 03:33 boot.log-20180625

主配置文件為/etc/logrotate.conf,還有個目錄/etc/logrotate.d/。系統會按應用,在這個目錄中創建轉儲配置文件。

-rw-r--r--  1 root root 160 Jan 31  2017 chrony
-rw-r--r--  1 root root 194 Oct 20  2017 httpd
-rw-r--r--  1 root root 868 Feb  4 10:33 mysql
-rw-r--r--  1 root root 351 Oct 17  2017 nginx
-rw-r--r--  1 root root 203 Mar  7 21:37 php-fpm
-rw-r--r--. 1 root root 136 Jun 10  2014 ppp
-rw-r--r--  1 root root 224 May 10  2017 syslog
-rw-r--r--  1 root root 100 Oct 18  2017 wpa_supplicant
-rw-r--r--  1 root root 100 Jan 30 21:51 yum

  

2 轉儲配置

2.1 nginx

[root@webmaster logrotate.d]# cat nginx 
/app/nginx/logs/*.log{
        daily
        missingok
        rotate 30
        compress
        delaycompress
        notifempty
        dateext
        sharedscripts
        postrotate
                if [ -f /app/nginx/logs/nginx.pid ]; then
                        kill -USR1 `cat /app/nginx/logs/nginx.pid`
                fi
        endscript
}

  

/app/nginx/logs/*.log
#文件匹配
daliy    按天分割

missingok  日誌為空則不轉儲
rotate 30  轉儲周期30天,過期日誌自動刪除
compress  通過gz格式壓縮, 文件名如:jab.com.log-20180625.gz
dateext  文件名按日期命令,如jab.com.log-20180625.gz
postrotate  轉儲後執行命令,這個是給nginx發送reopen log file信號。

3 logrotate命令

[root@webmaster logs]# logrotate -?
Usage: logrotate [OPTION...] <configfile>
  -d, --debug               Don‘t do anything, just test (implies -v)
  -f, --force               Force file rotation
  -m, --mail=command        Command to send mail (instead of `/bin/mail‘)
  -s, --state=statefile     Path of state file
  -v, --verbose             Display messages during rotation
  -l, --log=STRING          Log file
  --version                 Display version information

Help options:
  -?, --help                Show this help message
  --usage                   Display brief usage message

  

在寫完一個配置文件後,要用debug檢查一下,然後用verbose或者force切割試一下。

[root@webmaster logrotate.d]# logrotate -d /etc/logrotate.d/nginx  
reading config file /etc/logrotate.d/nginx
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /app/nginx/logs/*.log after 1 days (30 rotations)
empty log files are not rotated, old logs are removed
considering log /app/nginx/logs/error.log
  log does not need rotating (log has been already rotated)considering log /app/nginx/logs/jab.com.log
  log does not need rotating (log has been already rotated)not running postrotate script, since no logs were rotated

[root@webmaster logrotate.d]# logrotate -f /etc/logrotate.d/nginx

  

--end:所有參數參考--


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

logrotate日誌轉儲