概述

nginx 默认的日志文件是存放在单个日志文件中的,时间久了文件会很大,不利于分析日志。本文通过定时脚本的方式,实现按天来生成 nginx 日志。

前置准备

系统:centos7.9

已安装软件:nginx1.22.0

分隔日志

创建定时脚本 /var/log/nginx/cutnginxlog.sh ,内容如下

#!/bin/sh

# nginx日志路径
LOGS_PATH=/var/log/nginx/
TODAY=$(date +%Y%m%d)

# 移动日志并改名
# error.log 一般很小,没必要按日期切割,可自行选择是否开启
# mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error${TODAY}.log
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access${TODAY}.log

# 向nginx主进程发送重新打开日志文件的信号,命令解释请查看参考链接里的官方文档地址
kill -USR1 $(cat /var/run/nginx.pid)

允许所有用户执行此脚本

[root@localhost ~]# chmod a+x cutnginxlog.sh

创建定时任务,每天 23:59 执行一次此脚本, 执行日志位于 /var/log/nginx/cutnginxlog.log

[root@localhost ~]# echo '59 23 * * * root /var/log/nginx/cutnginxlog.sh >> /var/log/nginx/cutnginxlog.log 2>&1' >> /etc/crontab

参考链接

官方新开日志文件操作:https://nginx.org/en/docs/control.html#logs

按日期分割Nginx日志: https://blog.51cto.com/binghe001/5245736