Nginx按天分割轮询日志文件

使用linux系统自带的日志轮询工具logrotate

logrotate 介绍

-------------------------------------

logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过cron 程序来执行。

logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。

logrotate 的配置文件是/etc/logrotate.conf。主要参数如下表:

参数 功能

compress 通过gzip 压缩转储以后的日志

nocompress 不需要压缩时,用这个参数

copytruncate 用于还在打开中的日志文件,把当前日志备份并截断

nocopytruncate 备份日志文件但是不截断

create mode owner group 转储文件,使用指定的文件模式创建新的日志文件

nocreate 不建立新的日志文件

delaycompress 和compress 一起使用时,转储的日志文件到下一次转储时才压缩

nodelaycompress 覆盖delaycompress 选项,转储同时压缩。

errors address 专储时的错误信息发送到指定的Email 地址

ifempty 即使是空文件也转储,这个是logrotate 的缺省选项。

notifempty 如果是空文件的话,不转储

mail address 把转储的日志文件发送到指定的E-mail 地址

nomail 转储时不发送日志文件

olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统

noolddir 转储后的日志文件和当前日志文件放在同一个目录下

prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行

postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行

daily 指定转储周期为每天

weekly 指定转储周期为每周

monthly 指定转储周期为每月

rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份

tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig,

.rpmsave, v, 和~

size size 当日志文件到达指定的大小时才转储,Size 可以指定bytes (缺省)以及KB (sizek)或者MB

(sizem).

Nginx日志文件access.log的轮询实例(RedHat Linux)

------------------------------------------------------------------------------

nginx安装在目录/usr/local/nginx

nginx的access.log日志存放在/usr/local/nginx/logs/access.log

第一步:

在/etc/logrotate.d/文件目录下添加一个nginx文件内容如下

/usr/local/nginx/logs/access.log {
daily
rotate 365
postrotate
/bin/kill -USR1 `/bin/cat /usr/local/nginx/logs/nginx.pid`
endscript
}

需要注意的是/etc/logrotate.conf中的include /etc/logrotate.d需要处于非注释状态

第二步:

logrotate是作为linux系统日志的管理工具存在。他可以轮换,压缩,邮件发送系统日志文件。默认的logrotate被加入cron(cron是一个linux下 的定时执行工具 ,可以在无需人工干预的情况下运行作业)的/etc/cron.daily中作为每日任务执行。/var/lib/logrotate/statue中默认记录logrotate上次轮换日志文件的时间。

因此要实现日志的自动轮询还需要配置cron的/etc/crontab文件,如下:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
  59  23  *  *  * root run-parts /etc/cron.daily

上面表示每天的 23:59 执行/etc/cron.daily目录中的所有可执行文件

配置完成后重启cron服务。

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

这样,每天都会自动轮询,生成access.log - n日志了

Nginx按天分割轮询日志文件

时间: 2024-10-08 11:50:39

Nginx按天分割轮询日志文件的相关文章

Nginx 负载均衡-加权轮询策略剖析

本文介绍的是客户端请求在多个后端服务器之间的均衡,注意与客户端请求在多个nginx进程之间的均衡相区别(Nginx根据每个工作进程的当前压力调整它们获取监听套接口的几率,那些当前比较空闲的工作进程有更多机会获取到监听套接口,从而客户端的请求到达后也就相应地被它捕获并处理).如果Nginx是以反向代理的形式配置运行,那么对请求的实际处理需要转发到后端服务器运行,如果后端服务器有多台,如何选择一台合适的后端服务器来处理当前请求,就是本文要说的负载均衡.这两种均衡互不冲突并且能同时生效. nginx不

NGINX按天生成日志文件的简易配置

NGINX按天生成日志文件的简易配置 0x01 最近后端童鞋遇到一个小需求,拆分nginx生成的log文件,最好是按天生成,看着她还有很多bug待改的状态,我说这个简单啊,我来吧.曾经搞node后端的时候,这些东西都so easy的,我还记得当时用log4js,几行配置文件就能搞定,现在就算是直接配置nginx应该也不会特别麻烦. 0x02 先说一下项目的大概架构.整个项目采用docker部署,一共三个container,一个getaway负责整个服务的网络转发,然后就是一个backend和fr

使用logrotate轮询nginx和apache日志

使用logrotate轮询nginx和apache日志 文章目录 [隐藏] 配置nginx 配置apache 使用logrotate轮询日志很方便,配置也很简单. 配置nginx 1.建立/etc/logrotate.d/nginx文件 vi /etc/logrotate.d/nginx 2.写入如下内容: /var/log/nginx/*log { daily rotate 10 missingok notifempty compress sharedscripts postrotate [

apache虚拟主机、日志轮询、日志统计、去版本优化

一.虚拟主机 1.基于域名的虚拟主机 www.zhang.com   /var/html/www blog.zhang.com  /var/html/blog bbs.zhang.com   /var/html/bbs #创建虚拟机目录 mkdir /var/html/{www,blog,bbs} -p tree /var/html/ /var/html/ ├── bbs ├── blog └── www #创建默认文件 touch /var/html/{www,blog,bbs}/index.

logrotate日志切割、轮询、删除

1.创建轮询日志文件,加入如下内容,log-file是我自已指定的文件日志名字 [[email protected] mnt]# cat /etc/logrotate.d/log-file /mnt/log-file { size=100M rotate 5 compress dateext dateformat %Y-%m-%d-%s delaycompress notifempty missingok create 644 root root postrotate /usr/bin/kill

logrotate轮询nginx日志

Linux日志文件如果不定期清理,会填满整个磁盘.这样会很危险,因此日志管理是系统管理员日常工作之一.我们可以使用"logrotate"来管理linux日志文件,它可以实现日志的自动滚动,日志归档等功能.下面以nginx日志文件来讲解下logrotate的用法. 在/etc/logrotate.d/目录下创建一个配置文件"nginx",内容如下: #vim /etc/logrotate.d/nginx/usr/local/nginx/logs/*.log { dai

linux 日志定时轮询流程详解(logrotate)

logrotate介绍 对于Linux系统安全来说,日志文件是极其重要的工具.日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.当日志文件不断增长的时候,就需要定时切割,否则,写日志的速度和性能也会下降,更不便于我们归档,查询. 所以便有了使用logrotate的时候 ,logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循).压缩以及删除旧的日志文件.例如,你可以设置logrotate,让/var/log/foo日志文件每30天轮循,并删除

Linux轮询目录FTP传输文件

之前在公司,在linux服务器上需要写一个shell脚本,功能如下:定时任务5秒钟执行一次,轮询当前机器(127.0.0.1)A目录,并把A目录下所有QRYTYP*开头的文件传输到另外一台机器(10.32.64.128)的B目录下,文件名也为QRYTYP*. 这样就要考虑几个问题:现在有一个文件QRYTYP123456需要传输, 1.QRYTYP123456达到A目录下,但文件过大,还在传输.而刚好被定时任务轮询到,这样B目录下的目标文件就会不完整. 2.假设QRYTYP123456已经传输完成

nginx 日志文件分隔

Nginx命令 Nginx命令帮助如下 nginx -h nginx version: nginx/0.8.45 Usage: nginx [-?hvVt] [-s signal] [-c filename] [-p prefix] [-g directives] Options: -?,-h         : this help   // 帮助 -v            : show version and exit // 显示版本 -V            : show version