nginx 日誌整理 目錄區分 日誌配置
Nginx日誌對於統計、系統服務排錯很有用,但是原始的配置方案,日誌很難定位問題。因此設想將nginx日誌分類,包括access及error日誌。並且按照不同域名及日誌進行分類。
配置nginx日誌目錄
爲了方便管理,建議不同的server按照不同的.conf分開,便於後期維護,然後在nginx.conf中引入。
執行vim /usr/local/nginx/conf/nginx.conf
。
# 引入其他server塊的配置文件
include vhost/www.conf;
include vhost/database.conf;
在www.conf,database.conf的server塊中配置日誌的目錄
access_log /data/logs/nginx/www/nginx_access.log main;
error_log /data/logs/nginx/www/nginx_error.log error;
access_log /data/logs/nginx/database/nginx_access.log main;
error_log /data/logs/nginx/database/nginx_error.log error;
寫自動執行切割日誌的腳本 cut_nginx_log.sh
#! /bin/bash
M=$(date +%Y%m)
D=$(date +%m%d)
WWW_NGINX_LOGS_DIR=/data/logs/nginx/www/
WWW_NGINX_ACCESS_LOG=/data/logs/nginx/www/nginx_access.log
WWW_NGINX_ERROR_LOG=/data/logs/nginx/www/nginx_error.log
DATABASE_NGINX_LOGS_DIR=/data/logs/nginx/database/
DATABASE_NGINX_ACCESS_LOG=/data/logs/nginx/database/nginx_access.log
DATABASE_NGINX_ERROR_LOG=/data/logs/nginx/database/nginx_error.log
PHP_LOGS_DIR=/data/logs/php/
# 裁剪www域名下的nginx日誌
if [ -f "$WWW_NGINX_ACCESS_LOG" ]; then
echo 'www域名下nginx_access.log文件存在,開始裁剪日誌'
if [ ! -d "$WWW_NGINX_LOGS_DIR$M" ]; then
mkdir -p "$WWW_NGINX_LOGS_DIR$M"
echo '文件夾創建成功'
fi
mv ${WWW_NGINX_ACCESS_LOG} ${WWW_NGINX_LOGS_DIR}${M}/nginx_access_${D}.log
else
echo 'www域名下nginx_access.log不文件存在'
fi
if [ -f "$WWW_NGINX_ERROR_LOG" ]; then
echo 'www域名下nginx_error.log文件存在,開始裁剪日誌'
if [ ! -d "$WWW_NGINX_LOGS_DIR$M" ]; then
mkdir -p "$WWW_NGINX_LOGS_DIR$M"
echo '文件夾創建成功'
fi
mv ${WWW_NGINX_ERROR_LOG} ${WWW_NGINX_LOGS_DIR}${M}/nginx_error_${D}.log
else
echo 'www域名下nginx_error.log不文件存在'
fi
# 裁剪database域名下的nginx日誌
if [ -f "$DATABASE_NGINX_ACCESS_LOG" ]; then
echo 'database域名下nginx_access.log存在,開始裁剪日誌'
if [ ! -d "$DATABASE_NGINX_LOGS_DIR$M" ]; then
mkdir -p "$DATABASE_NGINX_LOGS_DIR$M"
echo '文件夾創建成功'
fi
mv ${DATABASE_NGINX_ACCESS_LOG} ${DATABASE_NGINX_LOGS_DIR}${M}/nginx_access_${D}.log
else
echo 'database域名下nginx_access.log不存在'
fi
if [ -f "$DATABASE_NGINX_ERROR_LOG" ]; then
echo 'database域名下nginx_error.log存在,開始裁剪日誌'
if [ ! -d "$DATABASE_NGINX_LOGS_DIR$M" ]; then
mkdir -p "$DATABASE_NGINX_LOGS_DIR$M"
echo '文件夾創建成功'
fi
mv ${DATABASE_NGINX_ERROR_LOG} ${DATABASE_NGINX_LOGS_DIR}${M}/nginx_error_${D}.log
else
echo 'database域名下nginx_error.log不存在'
fi
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
執行命令crontab -e
將腳本添加到crontab任務中
00 00 * * * /bin/bash /data/logs/cut_nginx_log.sh
以下,貼上項目中的部分代碼,供大家參考,不懂地方可以進入微信技術交流羣,如果過期可加我微信:mengyilingjian。