【Linux】nginx按日生成日志


写在开始:感谢

https://blog.csdn.net/andypan1314/article/details/74576180

和https://blog.csdn.net/weixin_38111957/article/details/81154333

给与的灵感和教程,感谢。

 

(前置:必须要找到你nginx服务器的pid和access.log、error.log位置)

1、目的:实现nginx按日生成access.log和error.log日志文件

2、场景:这个日志随着时间的增长,访问量越来越大的情况下,文件会越来越大。对于日志分析很会痛苦,这个时候写一个定时任务,这样岂不是完美。

3、实现思路:shell脚本+定时任务+nginx信号控制,完成日志定时切割

4、在你需要保存日志或者是其他目录,新建一个shell脚本。一般shell脚本都是.sh来标识:

1、创建一个文件,然后使用vim编辑该文件,编辑内容如下:

touch /www/w***ux/nginx/logs/nginxsavelog_byday.sh
chmod -R 755 /www/w***ux/nginx/logs/nginxsavelog_byday.sh

2、设置定时任务 输入命令"crontab -e"来设置linux定时任务 ,写入设置如下:

* 0 * * * /bin/sh /www/w***ux/nginx/logs/nginxsavelog_byday.sh,前面时间可以随意更改

3、shell脚本如下:(此脚本已分别切割access.log和error.log两个日志文件)

#!/bin/bash 

#安装目录下日志文件
base_path='/www/w***ux/nginx/logs/access.log'
base_path2='/www/w***ux/nginx/logs/error.log'
 
#需要保存的目录位置
log_path='/www/w****ux/nginx/logs/nginx_logs_byday'
 
#获取月份
log_month=$(date -d yesterday +"%Y%m")
 
#获取当天日期
log_day=$(date -d yesterday +"%d")
 
#在指定位置创建文件夹
mkdir -p $log_path/$log_month
 
#将安装目录下的日志文件,移动到指定存储位置
mv $base_path $log_path/$log_month/access_$log_day.log
mv $base_path2 $log_path/$log_month/error_$log_day.log
 
#再使用信号控制切割日志
kill -USR1 `cat /www/w***ux/nginx/logs/nginx.pid`

4、测试一遍:执行脚本

$ /bin/sh nginxsavelog_byday.sh

在/www/w****ux/nginx/logs/ 下面生成【nginx_logs_byday/201811/】目录,如下:

 

5、测试完毕,将脚本执行命令放入定时器:(使用vim和i命令追加)

$ cd /var/spool/cron
$ vi root
# i 追加sh命令
5 0 * * * /www/w****ux/nginx/logs/nginxsavelog_byday.sh

6、结束,次日查看生成日志文件。

 



 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM