日志切割之logrotate


logrotate簡介:

  logrotate 程序是一個日志文件管理工具。用來把舊的日志文件刪除,並創建新的日志文件,我們把它叫做“轉儲”。我們可以根據日志文件的大小,也可以根據其天數來轉儲,這個過程一般通過 cron 程序來執行。logrotate 程序還可以用於壓縮日志文件,以及發送日志到指定的E-mail 。

logrotate配置:

  主配置文件:

    /etc/logrotate.conf

  內容如下:

# see "man logrotate" for details
# rotate log files weekly-->指定日志轉儲周期為每周
weekly

# keep 4 weeks worth of backlogs-->指定日志文件刪除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份,即切分次數
rotate 4

# create new (empty) log files after rotating old ones-->是否創建新的日志文件在切分完老的日志后
create

# use date as a suffix of the rotated file-->使用日期作為切分文件的前綴
dateext

# uncomment this if you want your log files compressed-->是否對日志文件進行壓縮
#compress

# RPM packages drop log rotation information into this directory-->包含/etc/logrotate.d下面所有的配置項
include /etc/logrotate.d

# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
    monthly
    create 0664 root utmp
        minsize 1M
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

# system-specific logs may be also be configured here.

  然后在/etc/logrotate.d/目錄下可自行定義要切割的日志文件,先看一個系統默認的syslog的配置:

/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    sharedscripts
    postrotate   //在轉儲以后需要執行的命令,這個關鍵字必須單獨成行
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript 
}

  再來看一個切分nginx的日志配置:

/var/logs/nginx/*.log
{
        rotate 180    //轉儲次數
        copytruncate  //用於還在打開中的日志文件,把當前日志備份並截斷
        daily  //轉儲周期:每天
        dateext  //轉儲前綴
        compress  //啟用壓縮
        missingok  //如果日志文件丟失,繼續下一個而不輸出報錯信息
}

  再來看一個Logstash的日志切分配置:

/var/log/logstash/*.log
/var/log/logstash/*.err 
/var/log/logstash/*.stdout 
{
        daily
        rotate 7
        copytruncate
        compress
        delaycompress  //和compress一起使用時,轉儲的日志文件到下一次轉儲時才壓縮
        missingok
        notifempty  //如果是空文件的話,不轉儲
}

  可以根據需要,自行在/etc/logrotate.d/下定義即可,定義好后,配合crontab可實現日志自動切割:

0 0 * * * /usr/sbin/logrotate -f /etc/logrotate.conf > /dev/null 2>&1

  一般情況下,主配置文件無需修改。


免責聲明!

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



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