nginx日志按天数进行保存

分享于:2019-10-17 20:52:40

楠神简单说下操作步骤:


1)先去Nginx配置文件nginx.conf修改error_log、access_log


1.png


最好是像这样配置。


重启nginx是会报这样错误:

nginx: [emerg] unknown log format "main" in /usr/local/nginx/conf/nginx.conf

其原因很简单,是因为log_format没有开启的原因,在http{}中找到:

1.png

将每行前面的#去掉后在重启就可以了。


2)编写shell脚本文件


#!/bin/bash

yesterdayDir=`date -d "yesterday" +"%Y%m"`
yesterdayDirPath='/日志文件目录/www.phpnanshen.com/'${yesterdayDir};
logPath='/日志文件目录/www.phpnanshen.com/access.log';

if [ ! -d "$yesterdayDirPath" ]; then
    mkdir "$yesterdayDirPath"
fi  

mv ${logPath}   ${yesterdayDirPath}/$(date -d "yesterday" +%d).log;

kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)


kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)

重载日志文件


脚本文件位置自定义,随便。


这个地方会出现的问题:


一定要在Nginx配置文件配置好pid位置

1.png


配置好pid,重启时可能会出现这样的错误:


nginx: [alert] kill(6418, 1) failed (3: No such process)


可以这样解决:

ps -aux | grep nginx

kill -9 nginx进程号


3)开启定时任务


在定时任务crontab中类似这样写


00 0 * * * /root/nginxAccessLog.sh > /dev/null 2>&1