分割nginx日志的实现(避免日志多大)
更新时间:2024年04月17日 10:22:11 作者:前路无畏
nginx默认没有提供对日志文件的分割功能,所以随着时间的增长,access.log和error.log文件会越来越大,本文主要介绍了分割nginx日志的实现,具有一定的参考价值,感兴趣的可以了解一下
1. 问题提出
nginx的日志没有切分,会非常大,不利于日志的删除和查看
2. 解决思路
- 写一个脚本,去切分日志
- 使用crontab写一个定时任务,每天切一个。
3. 解决流程
脚本时别人的,拿过来用。
3.1 新建切割日志的脚本/opt/sh/cutlogs.sh
内容如下:
#!/bin/bash # 指定日志和切割后日志备份的目录 YEAR=$(date +%Y) MONTH=$(date +%m) DAY=$(date +%d) YESTERDAY=$(date -d "yesterday" +%Y-%m-%d) LOGS_PATH=/data/docker/saber/logs LOGS_BAK_PATH=/data/docker/saber/logs-bak # 得到1级目录名 if [[ $(($DAY)) -eq 1 ]] then if [[ $(($MONTH)) -eq 1 ]] then LOGS_BAK_PATH=$LOGS_BAK_PATH/$((${YEAR}-1))-12 else if [[ $(($MONTH)) -gt 10 ]] then LOGS_BAK_PATH=$LOGS_BAK_PATH/${YEAR}-$((${MONTH}-1)) else LOGS_BAK_PATH=$LOGS_BAK_PATH/${YEAR}-0$((${MONTH}-1)) fi fi else LOGS_BAK_PATH=$LOGS_BAK_PATH/${YEAR}-${MONTH} fi # 创建目录 mkdir -p $LOGS_BAK_PATH/${YESTERDAY} # 复制当前的日志文件到备份的目录 cp ${LOGS_PATH}/access.log ${LOGS_BAK_PATH}/${YESTERDAY}/access_${YESTERDAY}.log #cp ${LOGS_PATH}/admin_access.log ${LOGS_BAK_PATH}/${YESTERDAY}/admin_access_${YESTERDAY}.log cp ${LOGS_PATH}/error.log ${LOGS_BAK_PATH}/${YESTERDAY}/error_${YESTERDAY}.log # 清空日志 > ${LOGS_PATH}/access.log #> ${LOGS_PATH}/admin_access.log > ${LOGS_PATH}/error.log
3.2 写crontab定时任务
crontab -e
打开crontab
写入任务,每天1点跑定时任务:
0 1 * * * sh /opt/sh/cutlogs.sh >> /opt/sh/cutlogs.log
3.3 结果
结果如下:
日志全部在/data/docker/saber/logs-bak目录下
logs-bak下面是月
月下面是天
天下面是文件
4. 总计
- 使用脚本去做切分
- 使用定时器去每天跑脚本。
到此这篇关于分割nginx日志的实现(避免日志多大)的文章就介绍到这了,更多相关分割nginx日志内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
详解Nginx防盗链和Nginx访问控制与Nginx解析php的配置
这篇文章主要介绍了详解Nginx防盗链和Nginx访问控制与Nginx解析php的配置的相关资料,这里提供实例帮助大家,学习理解这部分内容,需要的朋友可以参考下2017-08-08Nginx服务器实现通过ip和user_gent限制访问的方法分析
这篇文章主要介绍了Nginx服务器实现通过ip和user_gent限制访问的方法,结合实例形式分析了Nginx通过限制ip和user_gent限制访问来过滤DDOS攻击的相关操作技巧,需要的朋友可以参考下2019-07-07Nginx通过nginx-rtmp-module模块搭建流媒体服务器实现直播
近日有客户咨询想用Nginx搭建流媒体服务器实现直播,方便他们打造自己的平台,经过各种测试发现如下文章不错,特分享给需要的朋友2023-10-10
最新评论