Nginx日志按日切分及清理超期的日志文件

Nginx的日志配置以下:nginx

#定义日志打印的格式
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
# 声明log   log文件路径  log格式
access_log  logs/access.log  main;

上面是http做用域下的日志配置,除此以外,nginx还有server和location做用域能够配置日志,日志级别 location > server > http 。web

nginx的日志若是不作切分的话会在一个文件中一直追加,致使日志文件愈来愈大,因此经过编写脚原本实现控制日切的功能,同时清理存在超过30天的文件。bash

脚本以下:ui

#!/bin/bash
#LOGS_PATH为日志存放路径
LOGS_PATH=/weblog/nginx/logs
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
KEEPTIME=$(date -d "-30 days" +%Y-%m-%d)
#切分日志文件
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log
mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log
#经过Nginx信号量控制重读日志,/web/nginx/为nginx安装目录
kill -USR1 $(cat /web/nginx/logs/nginx.pid)
#删除30天前的日志文件
rm -f ${LOGS_PATH}/access_{KEEPTIME}.log
rm -f ${LOGS_PATH}/error_{KEEPTIME}.log
echo 0

添加系统定时任务spa

crontab -e
#天天0时1分进行日志分割
01 00 * * * /web/nginx/logs/cut_nginx_log.sh  
 
#重启Linux定时任务
crond restart
相关文章
相关标签/搜索