說明:日志配置
Nginx 日志分文件有以下兩個:
access.log 記錄哪些用戶,哪些頁面以及用戶瀏覽器,IP等訪問信息;
error.log 記錄服務器錯誤的日志;
一、利用腳本日志切割(按天進行日志切割)
以下腳本任選一個就行;
A.編寫腳本 #!/bin/bash year=`date +%Y` month=`date +%m` day=`date +%d` logs_backup_path="/usr/local/nginx/logs_backup/$year$month" #日志存儲路徑 logs_path="/usr/local/nginx/logs/" #要切割的日志路徑 logs_access="access" #要切割的日志 logs_error="error" pid_path="/usr/local/nginx/logs/nginx.pid" #nginx的pid [ -d $logs_backup_path ]||mkdir -p $logs_backup_path rq=`date +%Y%m%d` #mv ${logs_path}${logs_access}.log ${logs_backup_path}/${logs_access}_${rq}.log mv ${logs_path}${logs_error}.log ${logs_backup_path}/${logs_error}_${rq}.log kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
B.編寫腳本 #! /bin/bash ## 假設nginx的日志存放路徑為/data/logs/ d=`date -d "-1 day" +%Y%m%d` 生成昨天的日期 logdir="/data/logs" 定義存放位置 nginx_pid="/usr/local/nginx/logs/nginx.pid" 定義位置,找他的pid cd $logdir 進入目錄下 for log in `ls *.log` 做個for循環 do mv $log $log-$d 做一個改名操作 done /bin/kill -HUP `cat $nginx_pid` 重新加載一下,生成新的日志文件
設置定時任務
# crontab –e 59 23 * * * bash /usr/local/nginx/cut_ngnix_log.sh #每天23:59分開始執行;
二、利用logrotate管理日志
(1)默認centos系統安裝自帶logrotate,軟件包信息說明;
# rpm -ql logrotate /etc/cron.daily/logrotate /etc/logrotate.conf # 主配置文件 /etc/logrotate.d # 配置目錄
(2)使用Logrorate切割日志
# vim /etc/logrotate.d/nginx /var/log/nginx/*.log #此處為nginx存儲日志的地方; { daily #指定轉儲周期為每天 rotate 30 #轉儲次數,超過將會刪除最老的那一個 missingok #如果日志文件丟失,不要顯示錯誤 compress #通過gzip 壓縮轉儲以后的日志 delaycompress #當前轉儲的日志文件到下一次轉儲時才壓縮 notifempty #當日志文件為空時,不進行輪轉 postrotate #執行的指令 if [ -f /var/run/nginx/nginx.pid ]; then kill -USR1 `cat /var/run/nginx/nginx.pid` fi endscript #PID路徑根據實際路徑填寫; }
(3)保存好配置文件后,測試效果:
# logrotate -vf /etc/logrotate.d/nginx access.log access.log.1 error.log error.log.1
(4)定時任務執行
#crontab –e
0 0 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx #每天凌晨00:00自動執行日志切割任務;