nginx日誌定時切割 按年月日

2021-08-30 19:38:32 字數 1652 閱讀 8176

2: 宣告乙個獨特的log_format並命名

在下面的server/location,我們就可以引用 mylog

在server段中,這樣來宣告

nginx允許針對不同的server做不同的log ,(有的web伺服器不支援,如lighttp)

access_log logs/access_8080.log mylog;   

宣告log   log位置          log格式;

實際應用: shell+定時任務+nginx訊號管理,完成日誌按日期儲存

分析思路:

凌晨00:00:01,把昨天的日誌重新命名,放在相應的目錄下

再usr1資訊號控制nginx重新生成新的日誌檔案

vim /usr/local/nginx/logs/nginx_logs_day.sh
具體指令碼:   (我的是吧整個日誌放到了昨天的資料夾下了)

#!/bin/bash

base_path='/usr/local/nginx/logs'

log_path=$(date -d yesterday +"%y%m%d")

day=$(date -d yesterday +"%d")

mkdir -p $base_path/$log_path

mv $base_path/*.log $base_path/$log_path/

kill -usr1 `cat /usr/local/nginx/logs/nginx.pid`

也可以單獨切割某個 以access.log為例

#!/bin/bash

base_path='/usr/local/nginx/logs'

log_path=$(date -d yesterday +"%y%m")

day=$(date -d yesterday +"%d")

mkdir -p $base_path/$log_path

mv $base_path/access.log $base_path/$log_path/access_$day.log

#echo $base_path/$log_path/access_$day.log

kill -usr1 `cat /usr/local/nginx/logs/nginx.pid`

新增許可權  chmod +x /usr/local/nginx/logs/nginx_logs_day.sh

定時任務

crontab -e 編輯定時任務、

01 00 * * * /usr/local/nginx/logs/nginx_logs_day.sh   每天0時1分(建議在02-04點之間,系統負載小)

有的是用cp,先把日誌複製了,然後再把日誌清空 這樣的好處是不用從啟nginx

MySQL支援按年月日查詢

在業務環境中,總是想要篩選出不同時間條件下的資料,例如我只想查詢當天資料,當月資料或者本年資料。於是就想通過mysql自帶的幾個時間函式進行簡單的實現。select from cars location where year create time year now and month create...

nginx 日誌切割定時

1.安裝定時任務 yum install crontabs 1 usr local nginx sbin cut my log.sh 3.重啟定時任務 service crond restart 附 常用定時任務命令 service crond start 啟動服務 service crond st...

nginx按小時切割日誌

有的日誌比較大,一天的日誌就有200g一台機器,如果按天切割日誌,檔案太大了,需要按小時切割日誌。下面講述乙個按小時切割日誌的方法,通過apache的cronolog來完成日誌的切割。1 首先安裝日誌切割 yum install httpd 2 配置nginx的日誌落地檔名,比如 opt log a...