nginx 日志分割


Linux系統

#nginx日志切割腳本

#!/bin/bash

#設置日志文件存放目錄
logs_path="/usr/local/nginx/logs/"

#設置pid文件
pid_path="/usr/local/nginx/nginx.pid"

#重命名日志文件
mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log

#向nginx主進程發信號重新打開日志
kill -USR1 `cat ${pid_path}`

 

 

 

windows系統

nginx的日志都寫在一個文件里,這個文件越來越大

寫一個bat腳本,按天來分割日志

原理:每天凌晨將nginx日志  重命名為 access-日期.txt

然后調用nginx -s  reopen 命令重新打開日志文件

log.bat   如下

@echo off

set name=access-%date%
move access.log %name%.log

nginx -s  reopen

 

 

我們可以簡單的把日志文件mv走,但是你會發現mv走后新的日志文件沒有重新生成,

一般linux下用的文件句柄,文件被打開情況下你mv走文件,但是原來操作這個文件的進程還是有這個文件的inode等信息,

原進程還是讀寫原來的文件,因此簡單的mv是無法生效的。

 

因此建議過程如下

1. mv原文件到新文件目錄中,這個時候 nginx還寫這個文件(寫入新位置文件中了)

2. 調用nginx -s  reopen用來打開日志文件,這樣nginx會把新日志信息寫入重新打開的日志

(重新打開的日志就是配置文件中設置的位置和名稱)

這樣完成了日志的切割工作, 同時切割過程中沒有日志的丟失。

 

 

然后將這個bat文件加入windows 計划任務,每天凌晨執行一次。


免責聲明!

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



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