centos中nginx按日期自動分割訪問日誌

Web 訪問日誌 (access_log) 記錄了所有外部客戶端對Web服務器的訪問行爲,包含了客戶端IP,訪問日期,訪問的URL資源,服務器返回的HTTP狀態碼等重要信息。
一條典型的Web訪問日誌如下
016/08/29 23:03:14 [error] 13837#0: *1 open() “/usr/local/nginx/html/favicon.ico” failed (2: No such file or directory), client: 192.168.3.58, server: loca
lhost, request: “GET /favicon.ico HTTP/1.1”, host: “192.168.3.55”

日誌自動切割腳本編寫
nignx沒有自動分開文件存儲日誌的機制。由於nginx它不會幫你自動分文件保存。所以,需要自己編寫腳本來實現。
腳本如下:

#!/bin/bash

# nginx日誌路徑 /usr/local/nginx/logs
LOGS_PATH=/usr/local/nginx/logs
TODAY=$(date -d 'today' +%Y-%m-%d)
#echo $TODAY

# 移動日誌並改名
mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${TODAY}.log
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${TODAY}.log

# 向nginx主進程發送重新打開日誌文件的信號

kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)

腳本原理:

先把以前的日誌文件移動重命名,目的是就是備份。

3、crontab自動任務配置
直接編寫vim /etc/crontab 或者 直接通過echo寫入自動任務

echo '59 23 * * * root /var/log/nginx/nginx_log_division.sh >> /var/log/nginx/cutnginxlog.log 2>&1' >> /etc/crontab

每晚23:59分自動執行計劃任務 以root用戶身份運行 將自動任務的執行日誌(錯誤和正確的日誌)自動寫入cutnginxlog.log “命令 >> 2>&1” 表示以追加方式將正確輸出和錯誤輸出都保存到同一個文件中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章