IT源码网

nginx配置按天生成日志文件讲解

developer 2021年09月05日 程序员 144 0
本文章主要介绍了nginx配置按天生成日志文件,具有不错的的参考价值,希望对您有所帮助,如解说有误或未考虑完全的地方,请您留言指出,谢谢!

nginx日志默认把日志都写到一个文件中,这样不方便管理,而且文件容量会越来越大,所以为了方便管理分析日志把日志按天切割,即每天生成一个新的日志文件。

实现步骤

1. 找到nginx日志文件
我的文件在/data/server/nginx/logs这个路径下,有个access.log文件就是nginx的日志文件

2. 进入该路径创建个sh文件(称为批处理日志文件)
touch part_log.sh(文件名自定义,后缀.sh即可)

3. 编辑part_log.sh文件。输入如下内容:
vi part_log.sh

D=$(date +%Y-%m-%d) 
LOGS_PATH=/data/server/nginx/logs 
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/${D}.log 
kill -USR1 $(cat /data/server/nginx/logs/nginx.pid) 

说明:

  • 定义一个D变量并把当前系统时间赋值给D
  • 定义一个变量LOGS_PATH用来存放日志的路径
  • 使用mv命令把access.log日志文件, 以时间格式重命名。 这样nginx又会生成一个新的access.log文件
  • kill -USR1 切换日志文件。语法:kill -USR1 主进程号

4. 设置好脚本使用定时器每天23:59跑一次就好了
编辑定时器
crontab -e
输入如下内容
59 23 * * * sh /data/server/nginx/logs/cutlog.sh > /data/bak.log 2>&1
查看定时器内容
crontab -l

crontab时间格式内容

*    *    *    *    *    command 
M    H    D    m    d    command 
分   时   日   月   周   命令 
第1列表示分钟1~59 每分钟用*或者 */1表示 
第2列表示小时1~23(0表示0点) 
第3列表示日期1~31 
第4列表示月份1~12 
第5列标识号星期0~6(0表示星期天) 
第6列要运行的命令或脚本内容   

5. 定时删除以前的日志
每天生成一个日志文件时间久了会产生很多文件,所以需要定期的清理一下旧的文件,
创建clear.sh文件,输入如下命令

$ find /data/server/nginx/logs/ -mtime +10 -name "*.log" -exec rm -f {} \; 

说明:

  • find:查找,liunx内置命令

  • /data/server/nginx/logs/:日志所在目录;

  • -mtime:标准语句写法;

  • +10:查找10天前的文件,这里用数字代表天数;

  • "*.log":log文件;

  • -exec:固定写法;

  • rm -rf:强制删除文件,包括目录;

  • {} \; :固定写法

连起来的意思就是,查找指定目录下10天前的*.log文件,然后删掉。

编辑好脚本后按照第四步加入到定时器中就好了。


发布评论
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

django2.2以上使用pymsql报错问题解决方法讲解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。