【Web集群】nginx-web应用 之 日志轮询切割

、使用logrotate实现

   1、添加配置文件

[root@localhost ~]# vim /etc/logrotate.d/nginx
/usr/local/nginx/logs/*.log {
 # 指定日志文件删除之前转储次数
        rotate 7      
# 指定转储周期为每天
    daily
# 如果日志丢失,不报错继续滚动下一个日志
        missingok
# 用于还在打开日志文件,把当前日志备份并截断
        copytruncate
# 使用当前日期作为命名格式
        dateext
}

   2、测试

[root@localhost ~]# logrotate -f /etc/logrotate.d/nginx 
[root@localhost ~]# ll /usr/local/nginx/logs/
总用量 12
-rw-r--r--. 1 root root    0 3月   2 21:26 access.log
-rw-r--r--. 1 root root 2331 3月   2 21:26 access.log-20210302
-rw-r--r--. 1 root root    0 3月   2 21:26 error.log
-rw-r--r--. 1 root root  783 3月   2 21:26 error.log-20210302
-rw-r--r--. 1 root root    6 3月   2 20:03 nginx.pid

二、使用shell脚本+计划任务实现

   1、配置脚本

[root@localhost ~]# mkdir /scripts
[root@localhost ~]# cd /scripts/
[root@localhost scripts]# vim cut_nginx_access_logs.sh
#!/bin/bash

# def var
date_format=$(date +%F)
log_dir=/usr/local/nginx/logs
log_name=access

# main program
[ -d ${log_dir} ] && cd ${log_dir} || exit 1
[ -f ${log_dir}/${log_name}.log ] || exit 1

mv ${log_dir}/${log_name}.log ${log_dir}/${log_name}_${date_format}.log
/usr/local/nginx/sbin/nginx -s reload

   2、配置计划任务

[root@localhost scripts]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab

[root@localhost scripts]# cat /var/spool/cron/root
00 00 * * * /bin/sh /server/script/cut_nginx_log.sh >/dev/null 2>&1 EOF 

   3、测试

[root@localhost scripts]# cd /usr/local/nginx/logs/
[root@localhost logs]# ll
总用量 8
-rw-r--r--. 1 root root  0 3月   2 21:26 access_2021-03-02.log
-rw-r--r--. 1 root root  0 3月   2 21:42 access.log
-rw-r--r--. 1 root root 61 3月   2 21:42 error.log
-rw-r--r--. 1 root root  6 3月   2 20:03 nginx.pid

 

上一篇:【小白程序圆python学习记】数据可视化


下一篇:centos 6.8安装Redis和简单的使用