Nginx的日志配置如下:
#定義日志打印的格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; # 聲明log log文件路徑 log格式 access_log logs/access.log main;
上面是http作用域下的日志配置,除此之外,nginx還有server和location作用域可以配置日志,日志級別 location > server > http 。
nginx的日志如果不做切分的話會在一個文件中一直追加,導致日志文件越來越大,所以通過編寫腳本來實現控制日切的功能,同時清理存在超過30天的文件。
腳本如下:
#!/bin/bash #LOGS_PATH為日志存放路徑 LOGS_PATH=/weblog/nginx/logs YESTERDAY=$(date -d "yesterday" +%Y-%m-%d) KEEPTIME=$(date -d "-30 days" +%Y-%m-%d) #切分日志文件 mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log #通過Nginx信號量控制重讀日志,/web/nginx/為nginx安裝目錄 kill -USR1 $(cat /web/nginx/logs/nginx.pid) #刪除30天前的日志文件 rm -f ${LOGS_PATH}/access_{KEEPTIME}.log rm -f ${LOGS_PATH}/error_{KEEPTIME}.log echo 0
添加系統定時任務
crontab -e #每天0時1分進行日志分割 01 00 * * * /web/nginx/logs/cut_nginx_log.sh #重啟Linux定時任務 crond restart