nginx日志自动切割的 shell 脚本

整合 Nginx
阅读数: 4214 2018年11月26日

1.日志配置

Nginx 日志分

access.log 记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;

error.log 记录服务器错误的日志


配置日志存储路径

location / {
	access_log          /usr/local/nginx/logs/access.log;
	error_log           /usr/local/nginx/logs/error.log;
}


按自己要求配置日志格式

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  60;

    include  /usr/local/nginx/vhost/*.conf;

    #access 日志格式设置

    log_format main '$remote_addr -$remote_user [$time_local] "request"'

                    '$status $body_bytes_sent "$http_referer"'

                    '"$http_user_agent" "$http_x_forwarded_for"'

                    '"$gzip_ratio" $request_time $request_length' ;

    open_log_file_cache max=1000 inactive=60s;

}

操作完上面的,日志就按自己的要求格式存储在指定位置


2.日志切割(按天进行日志切割)

A.编写脚本。
注意:在 linux 系统里面直接  vim 打开文件编写,不要在 win 电脑上编辑好,上传上去,会执行不了。

#!/bin/bash
year=`date +%Y`
month=`date +%m`
day=`date +%d`
logs=/check/log/cut_pingce_shell.log

echo -e "\n$(date '+%Y-%m-%d %H:%M:%S') start " >> $logs

#日志存储路径
logs_backup_path="/mnt/log/nginx/pingce/$year$month"

#要切割的日志路径
logs_path="/mnt/log/nginx/pingce/"
#要切割的日志
logs_access="pingce_access"
logs_error="pingce_error"

#nginx的pid
pid_path="/usr/local/nginx/logs/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

#向nginx主进程发送USR1信号,重新打开日志文件
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
#重新加载 nginx 配置,防止不会写日志
/etc/init.d/nginx reload

echo "$(date '+%Y-%m-%d %H:%M:%S') done" >> $logs


3.做定时任务

crontab –e

59 23 * * * bash /usr/local/nginx/shell/cut_ngnix_log.sh   #每天23:59分开始执行;


参考资料
https://www.cnblogs.com/free-long/p/8005082.html
kill 命令的用途:https://www.cnblogs.com/sparkdev/p/6659629.html
nginx之自动日志切割--请注意这里不是脚本:http://blog.51cto.com/10309478/2104320
phpriji.cn | 网站地图 | 沪ICP备17015433号-1