Nginx 日志分割并保存7天

Nginx的日志配置如下:

#定义日志打印的格式
log_format channel_access '$remote_addr       $remote_user    [$time_local]   "$host" "$request"      $status $body_bytes_sent        "$http_referer" "$http_user_agent"     $cookie_channel $cookie_dvid $cookie_cityId $cookie_pnid to "$upstream_addr" t $upstream_response_time s "$upstream_status" t $request_time "$http_x_forwarded_for" $request_length';

# 声明log   log文件路径  log格式
access_log /var/log/nginx/access.log channel_access;

上面是http作用域下的日志配置,除此之外,nginx还有server和location作用域可以配置日志,日志级别 location > server > http 。

nginx的日志如果不做切分的话会在一个文件中一直追加,导致日志文件越来越大,所以通过编写脚本来实现控制日切的功能,同时清理存在超过30天的文件。

脚本如下:

#!/usr/bin/bash


# 日志存放天数
DAYS=7

# 日志文件存放目录
logs_path=/var/log/nginx/access.log

# nginx进程pid
nginx_pid=`cat /usr/local/openresty/nginx/logs/nginx.pid`

# 日志名称
logs_name=$(date -d "yesterday" +%Y%m%d)

# 改名
mv $logs_path/access.log $logs_path/$logs_name.log

#向nginx主进程发信号重新打开日志
kill -USR1 $nginx_pid

# 保存7天
find /var/log/nginx/ -mtime +$DAYS -name "*.log" -exec rm -rf {} \;

添加系统定时任务(/etc/crontab)

crontab -e
#每天0时1分进行日志分割
01 00 * * * /web/nginx/logs/cut_nginx_log.sh  
 
#重启Linux定时任务
crond restart

保存生效
crontab /etc/crontab

Nginx 的信号控制

信号功能
HUP重启
QUIT从容关闭
TERM,INT快速关闭
USER1重置日志
USER2平滑升级
WINCH从容关闭进程

使用方法

kill -信号 主进程号
​
​
#不用关闭nginx进程就可以重读日志,此命令可以用于nginx的日志定时备份,按月/日等时间间隔分割有用
kill -USR1 nginx主进程号
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值