一、日志分割的要求
由于 Tengine 的日志都是写在一个文件当中的,因此,我们需要每天零点将前一天的日志存为另外一个文件,这里我们就将 Tengine 位于 logs 目录中的 access.log 存为 access_[yyyy-MM-dd].log 的文件。其实 logs 目录中还有个 error.log 的错误日志文件,这个文件也需要每天切割一个,在这里就说 access.log 了,error.log 的切割方法类似。
二、Linux平台下的日志分割
在 Linux 平台上进行切割,需要使用 date 命令以获得昨天的日期、使用 kill 命令向 Nginx 进程发送重新打开日志文件的信号,以及 crontab 设置执行任务周期。
先创建一个 Shell 脚本,如下:(这里我的日志目录在/var/log/tengine-2.1.1/)
vi Tengine-log-qiege
#!/bin/bash
## 零点执行该脚本
## Tengine 日志文件所在的目录
LOGS_PATH=/var/log/tengine-2.1.1/
## 获取昨天的 yyyy-MM-dd
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
## 移动文件
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log
mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log
## 向 Tengine 主进程发送 USR1 信号。USR1 信号是重新打开日志文件
kill -USR1 $(cat /usr/local/tengine-2.1.1/logs/nginx.pid)
三、设置计划任务,此处设置为每天00:00执行一次
# vi /etc/crontab
0 0 * * * root /home/Tengine-log-qiege
# service crond restart
# chkconfig crond on
至此Tengine的日志分割已完成。