默认情况下,nginx 的日志都统计在一个文件中,为了方便定位问题,我们通过自动切割 nginx 日志文件,每天或每周生成一个日志文件存储。
1 编写 shell 脚本
#!/bin/bash
LOGS_PATH=/usr/local/nginx/logs
BASE_PATH=/datalog/$(date -d "yesterday" +%Y-%m)
mkdir -p $BASE_PATH
acc_bak = $BASE_PATH/access_$(date -d "yesterday" +%Y-%m-%d).log
err_bak = $BASE_PATH/error_$(date -d "yesterday" +%Y-%m-%d).log
mv ${LOGS_PATH}/access.log $acc_bak
mv ${LOGS_PATH}/error.log $err_bak
# 以下任选其一
/usr/local/nginx/sbin/nginx -s reopen
# 或者
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
该脚本以天为单位分割,每月一个目录,使用 reopen 信号重新配置日志,或者向 nginx 主进程发送 usr1 信号。
命名为 NginxLogRotate.sh,保存到目录/usr/local/nginx/logs
2 设置定时任务
新建 crontab 任务:
crontab -e
编辑文件,每天 00:00 以 root 身份执行脚本
0 0 * * * root /usr/local/nginx/logs/nginxLogRotate.sh
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于