Logrotate实现nginx日志切割

logrotate 简单用法

# 直接运行所有 logrotat的方法, 这将运行主logrotate文件,其中包括其他 logrotate 配置
logrotate -f /etc/logrotate.conf

# 以详细+强制模式运行它。
logrotate -vf /etc/logrotate.conf

# 如果要强制运行单个特定目录或守护程序的日志文件,它们将独立运行。(使用nginx作为例子)
logrotate -df /etc/logrotate.d/nginx
logrotate -f /etc/logrotate.d/nginx



-v:显示进程
-f:强制运行

Nginx 日志切割

$ cat /etc/logrotate.d/nginx 
/var/log/nginx/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 www-data www-data
    dateext
    dateformat -%Y-%m-%d-%s
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

  • /var/log/nginx/*.log:日志文件的路径。根据你的实际Nginx日志路径进行修改。

  • daily:每天轮换日志。 其它可用值为‘daily’,‘weekly’或者‘yearly’。

  • missingok:如果日志文件不存在,则忽略它,不报错。

  • rotate 7:保留最近的7个轮换后的日志文件。

  • compress:轮换后压缩日志文件。

  • dateext:使用日期作为压缩文件的后缀。

  • dateformat -%Y-%m-%d-%s:指定日期格式,其中%Y表示四位年份,%m表示两位月份,%d表示两位日期,%s表示秒数。这将使得压缩文件的后缀为-YYYY-MM-DD-秒数.gz。

  • delaycompress:下一次轮换时才压缩上一次轮换的日志文件。

  • notifempty:如果日志文件为空,则不轮换。

  • create:创建新的空日志文件,并设置其权限和所有者。

  • sharedscripts:在所有日志文件都轮换后执行一次脚本。

  • postrotate和endscript:在轮换后执行的脚本,这里是重新打开Nginx以使其使用新的日志文件。

Last updated