一、日志分割的要求

    由于 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的日志分割已完成。