nginx日志分割


 nginx作為反向代理服務器,每天的日志量是非常大的,而日志也是查看管理程序的關鍵,如果只用單個日志文件勢必會造成

查看起來很麻煩。這是就需要對nginx產生的日志進行分割,具體方法如下。

 修改conf/nginx.conf文件,自定義輸出的日志格式,地址及名稱,部分改動如下:

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

   #將日志保存到logs/test1.log下
    access_log logs/test1.log main;

創建日志文件的目錄

[root@localhost nginx]# mkdir datalogs

編寫shell腳本用來將日志文件定時改名並備份到指定目錄 ,在sbin下創建log.sh腳本如下

#安裝nginx的基目錄
BASE_DIR=/usr/local/nginx

#當前日志文件的文件名

BASE_FILE_NAME=test1.log

#當前日志文件的路徑

CURRENT_PATH=$BASE_DIR/logs

#備份文件路徑
BAK_PATH=$BASE_DIR/datalogs

#當前文件全路徑

CURRENT_FILE=$CURRENT_PATH/$BASE_FILE_NAME

#備份時間
BAK_TIME=`/bin/date -d yesterday +%Y%m%d%H%M`

#備份文件全路徑
BAK_FILE=$BAK_PATH/$BAK_TIME-$BASE_FILE_NAME

echo $BAK_FILE

#停止nginx服務

$BASE_DIR/sbin/nginx -s stop

#將當前日志文件重命名並移動到指定地址

mv $CURRENT_FILE $BAK_FILE

#開啟Nginx服務

$BASE_DIR/sbin/nginx

 

更改log.sh shell腳本權限為對所有用戶可讀可寫可執行

[root@localhost sbin]# chmod 777 log.sh

crontab -e定時執行shell命令,每分鍾執行一次shell命令(備份操作)

*/1 * * * * sh /usr/local/nginx/sbin/log.sh

備份成功如下:

 


免責聲明!

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



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