nginx日志分割(log rotation)

nginx没有内置日志分割功能,容易造成日志累积,文件越来越大。必须借助于外部命令或者工具来分割日志。

本文介绍一种通过自定义脚本来分割日志的方法。

nginx日志及nginx.pid设置

nginx日志及进程号文件可以通过nginx.conf来修改,下面的配置将日志和nginx.pid都放在了nginx安装目录下。

worker_processes  4;
access_log  logs/access.log  main;
error_log  logs/error.log  warn;   
pid        logs/nginx.pid;      #pid of nginx master process

日志分割脚本

将实现分割的脚本放在/usr/local/bin/rotate_nginx_log.sh,内容如下

#!/bin/sh

# Get yesterday's date as YYYY-MM-DD
YESTERDAY=$(date -d 'yesterday' '+%Y-%m-%d')

# move log
mv /path/to/access.log /destination/access-$YESTERDAY.log  
mv /path/to/error.log /destination/error-$YESTERDAY.log

PID_FILE=/usr/local/nginx/logs/nginx.pid

# Tell nginx to reopen the log file.
kill -USR1 $(cat $PID_FILE)

crontab配置定时任务

写好脚本后,接下来定时执行即可。

sudo crontab -e

打开定时任务配置页面后,输入

0   0   *   *   *   /usr/local/bin/rotate_nginx_log.sh 1>>/var/log/rotate_nginx.log 2>&1

可以在每天凌晨执行上述日志重命名脚本,完成日志分割任务。

注意,许多linux的系统只有root用户才可以添加定时任务,所以必须用sudo命令。

通过下面的命令查看是否添加成功:

sudo crontab -l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值