当前位置: 代码网 > 服务器>服务器>Nginx > 分割nginx日志的实现(避免日志多大)

分割nginx日志的实现(避免日志多大)

2024年05月26日 Nginx 我要评论
1. 问题提出nginx的日志没有切分,会非常大,不利于日志的删除和查看2. 解决思路写一个脚本,去切分日志使用crontab写一个定时任务,每天切一个。3. 解决流程脚本时别人的,拿过来用。3.1

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日志内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com