1.首先配置一个nginx service段
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; // 写入日志格式
server {
listen 80; //端口号
server_name test.com; // 请求地址
location / {
root /var/www/test; // 文件路径
index index.html; // 访问文件
}
access_log logs/test.access.log main; // 日志写入地址,man代表日志写入规则
}
2.写一个日志分割的shell脚本
首先在nginx目录下创建一个存放分割日志的文件夹 :mkdir data_log
编写名称为runlog.sh的shell脚本
#!/bin/base
LOGPATH=/usr/local/nginx/logs/test.access.log; // 日志地址
BASEPATH=/usr/local/nginx/data_log/$(date -d yesterday +%Y%m); // 备份日志地址,根据年月作为目录
mkdir -p $BASEPATH; // 创建日志备份的文件夹
bak=$BASEPATH/$(date -d yesterday +%d%H%M).testcom.access.log; // 以天、小时、分钟为前缀的文件名
mv $LOGPATH $bak // 将原来的文件移动到备份的目录文件
touch $LOGPATH; // 在原来的日志目录中新创建一个文件
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` // 根据信号量 使日志重写到新的文件中
3.定时任务
首先打开crontab文件 vi /etc/crontab
然后写上定时任务 */1 * * * * sh /usr/local/nginx/data_log/runlog.sh // 该条记录的规则是按照每分钟执行一次此shell文件
备份的日志文件都在 /usr/local/nginx/data_log/ 里面