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。
在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值