1.聲明日志格式
聲明log log位置 log格式;
access_log logs/access.log main;
2.定義日志格式(以下為常用的日志格式 可各自按需調整格式):
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
' "$http_user_agent" "$http_x_forwarded_for" ';
Nginx日志的作用域可以為http server location 日志級別location>server>http
3.Nginx日志按天切割 ,
在nginx內創建logs文件
創建 mkdir logs
切換 cd logs
創建 mkdir data
切換 cd data
在data中編寫Shell腳本splitLog.sh(記住為splitLog.sh添加可執行權限)
# /bin/bash
# 日志保存位置
base_path='/opt/nginx/logs'
# 獲取當前年信息和月信息
log_path=$(date -d yesterday +"%Y%m")
# 獲取昨天的日信息
day=$(date -d yesterday +"%d")
# 按年月創建文件夾
mkdir -p $base_path/$log_path
# 備份昨天的日志到當月的文件夾
mv $base_path/access.log $base_path/$log_path/access_$day.log
# 輸出備份日志文件名
# echo $base_path/$log_path/access_$day.log
# 通過Nginx信號量控制重讀日志
kill -USR1 `cat /opt/nginx/logs/nginx.pid`
4.添加Linux定時任務
crontab -e
# 每天0時1分進行日志分割(建議在02-04點之間,系統負載小)
01 00 * * * /opt/nginx/logs/splitLog.sh
重啟Linux定時任務
crond restart
如果提示以下錯誤 crond: can't lock /var/run/crond.pid, otherpid may be 4141:資源暫時不可用
刪除/var/run/crond.pid 重新執行命令即可