一、日誌分割的要求
由於 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的日誌分割已完成。