# Logrotate实现nginx日志切割

### logrotate 简单用法

```ini
# 直接运行所有 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 日志切割

```bash
$ 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以使其使用新的日志文件。
