nginx 日誌按照日期分割
阿新 • • 發佈:2020-07-22
nginx 日誌檔案分割
nginx web 伺服器中 access 日誌,預設是不能按時間分隔的,每次日誌都是打在access.log上,這樣久而久之這個日誌檔案就特別的大,也不利於清理和管理,故此我們肯定是需要做時間上的切割的,那麼如何做到完美的切割的呢?
我們採取的方案是利用shell指令碼和crontab定時任務來做:每天 23:59:59 將日誌取出來並新建檔案,比如:error-2020-07-20.log。
建立shell指令碼 cut_nginx_log.sh
:
#!/bin/bash year=`date +%Y` month=`date +%m` day=`date +%d` logs_backup_path="/usr/local/Cellar/nginx/1.15.8/logs" logs_path="/usr/local/Cellar/nginx/1.15.8/logs/" logs_access="access" logs_error="error" pid_path="/usr/local/etc/nginx/logs/nginx.pid" [ -d $logs_backup_path ]||mkdir -p $logs_backup_path rq=`date +%Y_%m_%d` if [ -f "/usr/local/Cellar/nginx/1.15.8/logs/access.log" ];then mv ${logs_path}${logs_error}.log ${logs_backup_path}/${logs_error}_${rq}.log fi if [ -f "/usr/local/Cellar/nginx/1.15.8/logs/error.log" ];then mv ${logs_path}${logs_access}.log ${logs_backup_path}/${logs_access}_${rq}.log fi # 重新整理 nginx 日誌檔案 kill -USR1 $(cat /usr/local/etc/nginx/logs/nginx.pid)
建立定時任務:
# 每天 23:59:分開始執行
crontab –e 59 23 * * * bash cut_nginx_log.sh