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 。
nginx的日志如果不做切分的话会在一个文件中一直追加,导致日志文件越来越大,所以通过编写脚本来实现控制日切的功能,同时清理存在超过30天的文件。
脚本如下:
#!/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
添加系统定时任务
crontab -e #每天0时1分进行日志分割 01 00 * * * /web/nginx/logs/cut_nginx_log.sh #重启Linux定时任务 crond restart