切割nginx日志

一、使用logrotate切割

yum安装的nginx会自动使用logrotate这个日志管理软件进行切割,所以本章节我们主要介绍有关logrotate相关的知识点。

[[email protected] bin]# yum install -y nginx

1.1 logrotate介绍

logrotate是什么呢?它是一个linux系统日志的管理工具。它可以切割、压缩等其他软件的日志文件软件。

我们可以通过如下命令安装logrotate,如下:

[[email protected] bin]# yum -y install logrotate

查看logrotate的配置文件,使用如下命令:

[[email protected] bin]# rpm -ql logrotate

[[email protected] bin]# cat  /etc/logrotate.conf |grep -v ‘^#‘

通过上图,我们可以很明显的看到logrotate的配置文件是/etc/logrotate.conf,而/etc/logrotate.d/是用于存储其他配置文件的目录。该目录里的所有文件都会被主动的读入 /etc/logrotate.conf中执行。

1.2 logrotate配置文件详解

logrotate默认配置选项相对来说比较少,在此我们以切割nginx的配置文件为例,如下配置:

[[email protected] bin]# vim /etc/logrotate.d/nginx

/var/log/nginx/*log {

daily

rotate 7

missingok

dateext

# compress

delaycompress

notifempty

create 640 nginx adm

sharedscripts

postrotate

[ -f  /var/run/nginx.pid  ] && /bin/kill -USR1 ‘cat /var/run/nginx.pid‘

endscript

}

在该配置文件中,每个参数作用如下:

/var/log/nginx/为nginx日志的存储目录,可以根据实际情况进行修改。

daily:日志文件将按天轮循。

weekly:日志文件将按周轮循。

monthly:日志文件将按月轮循。

missingok:在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。

rotate 7:一次存储7个日志文件。对于第8个日志文件,时间最久的那个日志文件将被删除。

dateext:定义日志文件后缀是日期格式,也就是切割后文件是:xxx.log-20160402.gz这样的格式。如果该参数被注释掉,切割出来是按数字递增,即前面说的 xxx.log-1这种格式。

compress:在轮循任务完成后,已轮循的归档将使用gzip进行压缩。

delaycompress:总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。

notifempty:如果是空文件的话,不进行转储。

create 640 nginx adm:以指定的权限和用书属性,创建全新的日志文件,同时logrotate也会重命名原始日志文件。

postrotate/endscript:在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd进程将立即再次读取其配置并继续运行。注意:这两个关键字必须单独成行。

1.3 查看logrotate默认执行时间

logrotate是基于crontab运行的,所以这个时间点是由crontab控制的,具体可以查询crontab的配置文件/etc/anacrontab。

logrotate切割时间默认是在每天的3:22。这个时间点可以通过crontab配置文件查看到。如下:

[[email protected] ~]# cat /etc/anacrontab

如果你想在指定时间点,让logrotate切割日志的话,可以修改此配置文件的START_HOURS_RANGE参数。

时间: 2024-10-10 23:09:21

切割nginx日志的相关文章

烂泥:切割nginx日志

这几天自己看了下博客的nginx日志,发现日志文件发现越来越大. 因为nginx自己不会对日志文件进行切割,所以打算通过其他方式进行切割,而且为了后续能对nginx日志文件里面记录的数据进行分析,所以打算按照天对其进行切割. PS:本篇文章所以的操作是在centos6.5 OS 64bit上进行. 切割nginx日志,我们可以通过两种不同的方式进行,分别是:通过logrotate和通过shell脚本. 如果是yum方式安装的nginx,系统默认会自动通过logrotate这个日志管理软件,按天进

python切割nginx日志脚本

#!/usr/bin/env python #-*-coding:utf-8-*- #Python nginx cut log 1 import subprocess def mkdir(): subprocess.call('mkdir -pv /usr/local/nginx/logs/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/',shell=Tru

Linux下定时切割nginx日志并删除指定天数前的日志记录

nginx的log日志分为access.log和error.log:其中access.log 记录了哪些用户.哪些页面以及用户浏览器.ip和其他的访问信息:error.log则是记录服务器错误日志. error.log日志的形式如下: 201.158.69.116 - - [03/Jan/2013:21:17:20 -0600] fwf[-] tip[-] 127.0.0.1:9000 0.007 0.007 MX pythontab.com GET /html/test.html HTTP/1

每天定时切割nginx日志

每天凌晨运行切割日志的shell脚本 10 00* * * /bin/bash  /usr/local/nginx/sbin/cut_nginx_log.sh 脚本如下 #!/bin/bash # #This script run at 00:10 ## The Nginx logs path logs_path="/usr/local/nginx/logs/" ##递归建年目录,月目录 mkdir -p ${logs_path}$(date -d "yesterday&qu

使用logrotate切割nginx日志

配置:1.在/etc/logrotate.d目录下创建一个nginx的配置文件"nginx"配置内容如下 #vim /etc/logrotate.d/nginx/usr/local/nginx/logs/*.log {dailyrotate 5missingoknotifemptysharedscriptspostrotate    if [ -f /usr/local/nginx/logs/nginx.pid ]; then        kill -USR1 `cat /usr/l

使用Logrotate 切割nginx日志

[[email protected] pang]# cat /etc/logrotate.d/nginx /usr/local/nginx/logs/*log { monthly size=1000M missingok rotate 99 create compress delaycompressnotifempty sharedscripts postrotate [ -f /usr/local/nginx/logs/nginx.pid ] && kill -USR1 `cat /us

028_切割 Nginx 日志文件(防止单个文件过大,后期处理很困难)

mkdir /data/scriptsvim /data/scripts/nginx_log.sh #!/bin/bashlogs_path="/usr/local/nginx/logs/"mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").logkill -USR1 `cat /usr/local/nginx/logs/nginx.pid`c

定时切割nginx日志

#!/bin/bash #desc: cut nginx log #this script run at 00:00 LOG_PATH='/usr/local/nginx/logs/'; LOG_BACK_PATH='/home/www/log/'$(date -d '-1 days' +'%Y/%m/'); mkdir -p $LOG_BACK_PATH; cd $LOG_PATH && gzip access.log mv access.log.gz $LOG_BACK_PATH'ac

bash切割nginx日志

split.sh #!/bin/bashlog_dir="/dev/shm/"date_file=`date +%g%m%d%H%M`/bin/mv ${log_dir}/nginx_access.log ${log_dir}/${date_file}.trn[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid` /jobs/pusher/logtosql.sh ${log_dir}/${date_file}