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 。

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM