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
相關文章
相關標籤/搜索