欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > linux >内容正文

linux

linux将访问日志切成每天,最简单自动切割 nginx 访问日志示例

发布时间:2024/7/23 linux 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 linux将访问日志切成每天,最简单自动切割 nginx 访问日志示例 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

网站上线后,没怎么注意过日志,有一天需要查日志时,才发现竟然有 100 多个 G,一个文本文件竟然有 100 多个G,这也太大了。

nginx 是一个非常轻量的 web 服务器,体积小、性能高、速度快等诸多优点。但不足的是也存在缺点,比如其产生的访问日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将导致日志文件容量非常大,不便于管理。当然了,我们也不希望看到这么庞大的一个访问日志文件,那需要手动对这个文件进行切割。

整体思路:

由于 nginx 的日志,都是写在一个文件中的,具体由我们的 nginx.conf 配置文件来决定,比如 access.log,那么我们可以在每天晚上 12 点,也就是每天0点,把这个 access.log 文件,重新命名一下,比如命令为 access_2017-11-22.log,之后再让 nginx 重新写一个 access.log 文件,这样就可以达到每天一个日志文件,之后再想去查找,或管理,也方便很多啦。

具体实现:

整个操作只涉及到了 重命名文件,以及让 nginx 重新打开一下日志文件,所以可以简单的来讲一个 shell 脚本来实现,再结合 linux crontab 计划任务,让脚本在每天零点执行即可。

脚本如下:

cat /usr/local/nginx/sbin/cut_nginx_logs.sh

#!/bin/bash

#指定 nginx 日志文件路径

Logs_Path=/usr/local/nginx/logs

#获取昨天的日期

Yesterday=$(date -d"yesterday" +%Y-%m-%d)

#重命名日志文件

mv ${Logs_Path}/access.log ${Logs_Path}/access_${Yesterday}.log

#给nginx 进程发送指令,重新打开日志文件

kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)

PS: kill 命令必须要有,如果 nginx 没有重新打开日志文件,则不会向新的文件写入日志,还会继续向原来的日志文件写入。

contab 设置:

contab -e

0 0 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh

PS:具体周期可自行调整 脚本中的 date 命令和 crontab,比如,两天,一周,一个月等

总结

以上是生活随笔为你收集整理的linux将访问日志切成每天,最简单自动切割 nginx 访问日志示例的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。