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等。
分类:
Linux / nginx
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· DeepSeek本地性能调优
· 一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略