有一台nginx反向代理服务器,下面有多个站点如何对日志进行分割?

使用网上这些脚本切割方式有一个问题,因为日志目录下各站点日志是单独的,用下面这个脚本只能分割一个日志。

#!/bin/bash
#此脚本用于自动分割Nginx的日志,包括access.log和error.log
#每天00:00执行此脚本 将前一天的access.log重命名为access-xxxx-xx-xx.log格式,并重新打开日志文件
#Nginx日志文件所在目录
LOG_PATH=/opt/nginx/logs
#获取昨天的日期
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
#获取pid文件路径
PID=/var/run/nginx/nginx.pid
#分割日志
mv ${LOG_PATH}access.log ${LOG_PATH}access-${YESTERDAY}.log
mv ${LOG_PATH}error.log ${LOG_PATH}error-${YESTERDAY}.log
#向Nginx主进程发送USR1信号,重新打开日志文件
kill -USR1 `cat ${PID}`

有没有方法像tengine那样自动分割保存?

阅读 3.9k
3 个回答

这个很简单,如果是同一个nginx,根据你的日志文件名直接把脚本中以下两条改一下就行,如果有多个日志,多写几条就是。

#分割日志
mv ${LOG_PATH}access.log ${LOG_PATH}access-${YESTERDAY}.log
mv ${LOG_PATH}error.log ${LOG_PATH}error-${YESTERDAY}.log

如果你是从软件仓库安装的nginx(不管是发行版的官方仓库,还是Nginx维护的仓库),里面都自带有logrotate脚本的,不用你自己写脚本切割日志,logrotate的配置就已经帮你自动切割了,nginx就是用这玩意滚动日志的。你把这个脚本改一改就满足你的需求了。即使保持默认,也会自动帮你切割日志

多用几个shell,分别进行切割呗

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题