当前位置: 首页 > 后端技术 > PHP

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

时间:2023-03-29 16:32:15 PHP

nginxweb服务器中的access日志默认是不能按时间分割的,每条日志都打在access.log上,所以日志文件会特别大over时间,也不利于清理和管理,所以我们肯定需要做时间切割,那么如何做到完美切割呢?我们采用的解决方案是使用shell脚本和crontab定时任务来完成。比如新建一个nginx_time_log.sh脚本,脚本内容如下(当然也可以使用linux中的logrotate来做日志切割)!/bin/bashlocal_path=/home/work/tp/log/webserver#找到你的服务器存放访问日志的目录cd$local_path#进入这个目录mvaccess_log$local_path/access_logdate+%Y%m%d%H#把当前的access_log移到这段时间,其实相当于日志切分nginx_pid=ps-ef|grep-vgrep|grep“nginx:masterprocess“|awk-F”””'{print$2}'#Findyournginxprocesskill-USR1$nginx_pid#执行usr1,这样access_log会先移动到access_log.time的日志文件,会生成一个新的access_log文件。最后通过定时任务每小时拆分nginx_time.sh脚本。crontab命令如下:0/1sh/xxx(你脚本的存储命令)/nginx.sh按小时切