nginx日志按天分割

一、定时任务执行shell脚本方式
1、先上shell脚本
注意路径的修改!!

#!/bin/sh
# Program:
#     Auto cut nginx log script.
 
# nginx日志路径 
LOGS_PATH=/apps/svr/nginx-1.16.1/logs
TODAY=$(date -d 'today' +%Y-%m-%d)
 
# 移动日志并改名
mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${TODAY}.log
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${TODAY}.log
 
# 向nginx主进程发送重新打开日志文件的信号
kill -USR1 $(cat /apps/svr/nginx-1.16.1/conf/nginx.pid)

2、定时的配置
每天23:59将日志定时切割,这个时间的设定和你脚本的日期记录取值需要对应

vim /etc/crontab
59 23 * * * root /web/scripts/nginx-1.16.1/cutnginxlog.sh >> /apps/svr/nginx-1.16.1/logs/cutnginxlog.log 2>&1

3、注意nginx日志路径的正确指向

二、logrotate的使用:一般linux系统自带
1、yum安装logrotate

yum install logrotate

安装完成后检查相应文件的生成情况,正常情况会在/etc/cron.daily/ 生产logrotate脚本

2、添加nginx日志切割配置
(1)进入目录

cd /etc/logrotate.d/
vim nginx

(2)添加以下配置

/home/wwwlogs/*log {
    su root www
    create 600 www www
    daily
    dateext
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    olddir /home/wwwlogs/oldlogs  # 这个目录要事先创建好,并给相关权限
    postrotate
        kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
    endscript
}

(3)目录情况:

/home/wwwlogs/ 为nginx的日志目录
/usr/local/nginx/logs/nginx.pid 运行的PID存放文件

3、以上配置完成,每天切割日志

4、参考内容

参考地址:https://cloud.tencent.com/developer/article/1508110

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容