分享一个Nginx日志按天自动切割的shell脚本~

简介

默认情况Nginx会把所有访问日志生成到一个指定的访问日志文件access.log里,但这样一来,时间长了就会导致日志内容很多,不利于分析日志和处理,因此,有必要对Nginx按天或按小时切割成不同的文件进行保留,Nginx日志轮询有很多方法,本文给大家介绍使用Shell脚本实现按天切割的方法。

具体教程

日志切割脚本如下:

[root@www ~]# cat /scripts/cut_nginx_log.sh
#!/bin/bash
Date=`date +%Y%m%d -d -1day`
BaseDir="/app-lication/nginx"
NginxLogDir="$BaseDir/logs"
LogName="access_www"
[ -d $NginxLogDir ] && cd $NginxLogDir||exit 1
[ -f ${LogName}.log ]||exit 1
/usr/bin/mv ${LogName}.log  ${Date}_${LogName}.log
$BaseDir/sbin/nginx -s reload

注意:脚本实现切割Nginx日志的思想为将正在写入的Nginx日志(access_www.log)改名为带日期的格式文件(20230116_access_www.log),然后平滑重新加载Nginx,生成新的Nginx日志(access_www.log)

设置定时任务

通过定时任务实现每天 00:05 定时执行/scripts/cut_nginx_log.sh切割日志。

root@www ~]# vim /var/spool/cron/root
5 0 * * * /bin/sh /scripts/cut_nginx_log.sh >/dev/null 2>&1

日志切割演示

# 日志切割前
[root@www ~]# ls  /app-lication/nginx/logs/
access.log  access_www.log  error.log  nginx.pid
# 当前日期
[root@www ~]# date +%F
2023-01-17
# 手动执行日志切割脚本
[root@www ~]# sh /scripts/cut_nginx_log.sh
# 日志切割后
[root@www ~]# ls  /app-lication/nginx/logs/
20230116_access_www.log  access.log  access_www.log  error.log  nginx.pid
# 将当前日期+1天
[root@www ~]# date -s '2023/01/18'
Fri Jan 18 00:00:00 CST 2023
# “第二天”执行日志切割脚本
[root@www ~]# sh /scripts/cut_nginx_log.sh
# 日志切割后
[root@www ~]# ls  /app-lication/nginx/logs/
20230116_access_www.log  20230117_access_www.log  access.log  access_www.log  error.log  nginx.pid

Nginx常用日志收集及分析工具有rsyslog、awstats、flume、ELK、storm等。感兴趣的同学,可以自行研究或参考书籍及网上资料。有时间下次跟大家聊聊ELK日志流行收集方案~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新手 小李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值