Nginx 虽然是轻量的 Web 服务器,优点多多。但其产生的访问日志文件一直就是一个,不会自动地进行切割。如果访问量很大的话,将导致日志文件容量非常大,内容非常多。不利于管理,日后出现问题查看也很不方便。
在 Linux 中使用 Shell 脚本加 crontab 命令就能进行日志自动切割。在 Linux 平台上进行切割,需要使用 date 命令以获得昨天的日期、使用 kill 命令向 Nginx 进程发送重新打开日志文件的信号,以及 crontab 设置执行任务周期。
1.日志切割要求
在每天零点将前一天的日志存为另外一个文件。这里就将 Nginx 日志目录 logs 中的 access.log 存为 access_[yyyy-MM-dd].log 的文件。
2.切割日志脚本
# pwd
/usr/local/nginx/logs
# vim nginx_log.sh
#!/bin/bash
logs_path="/usr/local/nginx/logs/"
pid_path="/usr/local/nginx/logs/nginx.pid"
mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 `cat ${pid_path}`
3.修改文件权限
# pwd
/usr/local/nginx/logs
chmod u+x nginx_log.sh
4.设置计划任务
# crontab -e
0 0 * * * /usr/local/nginx/logs/nginx_log.sh
5.日后访问日志就以每天的格式呈现了
#pwd
/usr/local/nginx/logs
# ls
access_20141223.log
access_20141224.log
access_20141225.log
access_20141226.log
access.log
error.log
nginx_error.log
nginx_log.sh
nginx.pid
2015-02-03 10:06