页面加载中,请稍候
来源:开源Linux发布时间:2023-01-18348浏览
询问 AI
默认情况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||exit1
[-f${LogName}.log]||exit1
/usr/bin/mv${LogName}.log${Date}_${LogName}.log
$BaseDir/sbin/nginx-sreload
注意:脚本实现切割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
50***/bin/sh/scripts/cut_nginx_log.sh>/dev/null2>1
#日志切割前
[root@www~]#ls/app-lication/nginx/logs/
access.logaccess_www.logerror.lognginx.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.logaccess.logaccess_www.logerror.lognginx.pid
#将当前日期+1天
[root@www~]#date-s'2023/01/18'
FriJan1800:00:00CST2023
#“第二天”执行日志切割脚本
[root@www~]#sh/scripts/cut_nginx_log.sh
#日志切割后
[root@www~]#ls/app-lication/nginx/logs/
20230116_access_www.log20230117_access_www.logaccess.logaccess_www.logerror.lognginx.pid
Nginx常用日志收集及分析工具有rsyslog、awstats、flume、ELK、storm等。感兴趣的同学,可以自行研究或参考书籍及网上资料。有时间下次跟大家聊聊ELK日志流行收集方案~
新闻来源:开源Linux,文中所述为作者独立观点,不代表icspec立场。更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj。
暂无评论哦,快来评论一下吧!
1 天前

2026-07-22