使用logrotate工具(推荐)
sudo apt install logrotate
/etc/logrotate.d/nginx
,添加以下内容:/var/log/nginx/*.log {
daily # 每日轮转
missingok # 忽略丢失文件
rotate 14 # 保留14天日志
compress # 压缩旧日志
delaycompress # 延迟压缩
notifempty # 空日志不处理
create 0640 www-data adm # 新日志权限
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 $(cat /var/run/nginx.pid) # 通知Nginx重新打开日志
fi
endscript
}
sudo logrotate -d /etc/logrotate.d/nginx
(测试),sudo logrotate -f /etc/logrotate.d/nginx
(强制执行)。手动清理(可选)
通过find
命令删除旧日志,例如删除30天前的日志:
sudo find /var/log/nginx -name "*.log" -type f -mtime +30 -exec rm -f {} \;
tail -f /var/log/nginx/access.log
:实时查看访问日志。grep "ERROR" /var/log/nginx/error.log
:筛选错误日志中的关键字。sudo pip3 install ngxtop
ngxtop -l /var/log/nginx/access.log
自定义Nginx日志格式,便于分析:
编辑/etc/nginx/nginx.conf
,在http
模块中添加:
log_format custom '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log custom;
cron
定时执行日志清理或备份脚本。参考来源: