nginx中access日志如何做到按时间完美切割

47次阅读

共计 632 个字符,预计需要花费 2 分钟才能阅读完成。

nginx web 服务器中 access 日志,默认是不能按时间分隔的,每次日志都是打在 access.log 上,这样久而久之这个日志文件就特别的大,也不利于清理和管理,故此我们肯定是需要做时间上的切割的,那么如何做到完美的切割的呢?
我们采取的方案是利用 shell 脚本和 crontab 定时任务来做
比如新建一个 nginx_time_log.sh 脚本,里面的内容如下 (当然也可以使用 linux 中的 logrotate 来做日志切割)
!/bin/bash
local_path=/home/work/tp/log/webserver #找到您服务器中存放 access 日志的目录
cd $local_path #进入这个目录
mv access_log $local_path/access_log date +%Y%m%d%H #把当前的 access_log 挪到这个时期下,其实就是相当于日志的切分
nginx_pid=ps -ef |grep -v grep |grep“nginx: master process“|awk -F””‘{print $2}’#找到您 nginx 的进程
kill -USR1 $nginx_pid #执行 usr1

这样就会先把 access_log 移动到一个 access_log. 时间 的日志文件,并且会新生产一个 access_log 文件
最后通过定时任务来让这个 nginx_time.sh 脚本按每小时来进行切分
crontab 命令如下:
0 /1 sh /xxx(您这个脚本的存放命令)/nginx.sh 按每小时切割

正文完
 0