使用 logrotate
来管理 Nginx 日志可以帮助你定期轮换日志文件,防止日志文件变得过大。下面是详细的教程,如何使用 logrotate
来管理 Nginx 日志。
配置 logrotate
创建或编辑一个新的 logrotate
配置文件来管理 Nginx 日志文件。例如,我们可以在 /etc/logrotate.d/
目录下创建一个名为 nginx
的文件:
sudo nano /etc/logrotate.d/nginx
配置文件内容
按天分割日志
在该文件中添加以下内容(假设你的 Nginx 日志文件位于 /www/wwwlogs/
目录):
/www/wwwlogs/*.log {
daily
rotate 5
missingok
notifempty
create 640 www www
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
按文件大小分割日志
/var/log/nginx/*.log {
size 500M # 当日志文件超过 500MB 时进行轮转
rotate 5 # 保留 5 个轮转文件
missingok # 如果日志文件丢失,则忽略错误
notifempty # 如果日志为空,则不轮转
create 640 www www # 轮转后的日志文件权限和所有者
sharedscripts # 运行脚本时共享处理
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
daily
:表示每天轮转日志文件。missingok
:如果日志文件丢失,不会产生错误。rotate 5
:保留 5 天的日志文件。compress
:轮转的日志文件将被压缩。delaycompress
:延迟一个轮转周期再压缩日志文件。notifempty
:如果日志文件为空,不进行轮转。create 0640 www www
:使用指定的权限和所有者创建新的日志文件。sharedscripts
:确保postrotate
脚本只运行一次。postrotate
和endscript
:在日志轮转后重新加载 Nginx,以使其使用新的日志文件。
指定单个日志文件
/www/wwwlogs/abc.log {
}
指定多个日志文件
/www/wwwlogs/abc.log /www/wwwlogs/abc.error.log{
}
指定目录下的所有.log
结尾的日志文件
/www/wwwlogs/*.log {
}
测试 logrotate
配置
在使用前测试你的 logrotate
配置是否正确:
sudo logrotate -d /etc/logrotate.d/nginx
如果一切正常,你会看到类似的输出,而不会有错误信息。
手动运行 logrotate
可以手动运行 logrotate
以确认其工作正常:
sudo logrotate -f /etc/logrotate.d/nginx
定时运行
logrotate
默认情况下会通过 cron 作业每日运行一次。在 /etc/cron.daily
目录下,你会发现一个名为 logrotate
的脚本,这将确保 logrotate
每天运行并轮转日志文件。
以上就是使用 logrotate
来管理 Nginx 日志的基本步骤。这将确保你的 Nginx 日志文件不会无限增长,占用过多的磁盘空间。