使用Linux自帶的命令logrotate對Nginx日志進行切割


說明:

Nginx安裝目錄:/usr/local/nginx/
Nginx日志目錄:/var/log/nginx/error/*.log /var/log/nginx/access/w1/*.log /var/log/nginx/access/w2/*.log /var/log/nginx/access/w3/*.log

nginx配置文件:nginx.conf


user  www www;

.......

error_log  /var/log/nginx/error/error.log error;


http {
......

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

    access_log  logs/access.log  main;

 .......

    server {      

......


        access_log  /var/log/nginx/access/w1/access.log  main;
    }

include /usr/local/nginx/conf/vhost/*.conf;
}

其他站點只需要在server內增加 access_log  /var/log/nginx/access/w2/access.log  main; 即可,
然后在相應的日志路徑建文件夾並授權www

1、添加nginx日志切割腳本
cd  /etc/logrotate.d  #進入目錄
vi   /etc/logrotate.d/nginx   #編輯腳本

/var/log/nginx/error/*.log /var/log/nginx/access/w1/*.log /var/log/nginx/access/w2/*.log /var/log/nginx/access/w3/*.log{
daily
rotate 15
missingok
notifempty
dateext
compress
delaycompress
create 600 www www
sharedscripts
postrotate
    if [ -f /usr/local/nginx/logs/nginx.pid ]; then
        kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
    fi
endscript
}
:wq!  #保存退出
chmod 644  /etc/logrotate.d/nginx  #添加執行權限

說明:

```bash

    if [ -f /usr/local/nginx/logs/nginx.pid ]; then
        kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
    fi

可以使用kill -USR1 $(ps aux | grep nginx | grep master | awk '{print $2}')  暫不推薦使用這種方式。。。

 

```


2、執行腳本
/usr/sbin/logrotate -vf  /etc/logrotate.d/nginx


3、添加定時任務
crontab  -e  #添加以下代碼
0 0 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx  #每天凌晨定時執行腳本


至此,Linux下nginx日志每天定時切割教程完成。

備注:logrotate相關參數說明
missingok:忽略錯誤,如“日志文件無法找到”的錯誤提示。
dateext:切換后的日志文件會附加上一個短橫線和YYYYMMDD格式的日期,沒有這個配置項會附加一個小數點加一個數字序號
notifempty:如果日志文件為空,不執行切割。
daily:按天切割日志。可用值月:monthly 周:weekly 年:yearly
rotate 7:保留最近7天的日志記錄
sharedscripts:只為整個日志組運行一次的腳本
postrotate和endscript:里面指定的命令將被執行。
compress::在輪循任務完成后,已輪循的歸檔將使用gzip進行壓縮。
delaycompress::總是與compress選項一起用,delaycompress選項指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循周期進行。這在你或任何軟件仍然需要讀取最新歸檔時很有用。
create 644 www www: 以指定的權限創建全新的日志文件,同時logrotate也會重命名原始日志文件。





免責聲明!

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



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