Logrotate日志切分

来源:互联网 发布:淘宝首页广告费用 编辑:程序博客网 时间:2024/05/22 17:28

logrotate 程序是一个日志文件管理工具。用来把旧的日志文件更名或删除,并创建新的日志文件,我们把它叫做“转储”。是个使日志轮替的程序,有了它就不用看着自己的日志体积一天天的变大,而可以根据你自己的需求来设定日志转储。这个工具对于像nginx这种大日志量的处理非常有用。

Logrotate介绍

Logrotate通常是基于CRON来运行的,其实现脚本是/etc/cron.daily/logrotate

/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1EXITVALUE=$?if [ $EXITVALUE != 0 ]; then    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"fiexit 0

实际运行时,Logrotate会调用配置文件/etc/logrotate.conf

# see "man logrotate" for details# rotate log files weekly#切分周期weekly# keep 4 weeks worth of backlogs#保留记录个数rotate 4# create new (empty) log files after rotating old ones#rotate旧文件时是否创建新的日志文件create# use date as a suffix of the rotated filedateext# uncomment this if you want your log files compressed#是否压缩#compress# RPM packages drop log rotation information into this directoryinclude /etc/logrotate.d# no packages own wtmp and btmp -- we'll rotate them here/var/log/wtmp {    monthly    create 0664 root utmp        minsize 1M    rotate 1}/var/log/btmp {    missingok    monthly    create 0600 root utmp    rotate 1}# system-specific logs may be also be configured here.

这里的设置可以理解为Logrotate的缺省值,当然了,可以我们在/etc/logrotate.d目录里放置自己的配置文件,用来覆盖Logrotate的缺省值。

Logrotate使用演示

按天保存一周的Nginx日志压缩文件,配置文件为/etc/logrotate.d/nginx

/data2/nginx_log/*.log {    daily    missingok    create    rotate 30    compress    dateext    notifempty    sharedscripts    postrotate        if [ -f /data2/nginx_log/nginx.pid ]; then          kill -HUP `cat /data2/nginx_log/nginx.pid`        fi    endscript}

可以手动执行命令:

shell> logrotate -f /etc/logrotate.d/nginx

也可以通过debug选项来验证测试一下:

shell> logrotate -d -f /etc/logrotate.d/nginx

正常使用添加到crontab中即可:

#rotate nginx logs0 0 * * *  logrotate -f /etc/logrotate.d/nginx

参数说明

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 10MB:当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).
sharedscripts:支持通配符,符合条件的所有的日志文件都轮转完毕后统一执行一次脚本

参考:
http://huoding.com/2013/04/21/246
http://my.oschina.net/davisqi/blog/77670
http://blog.csdn.net/cjwid/article/details/1690101

0 0
原创粉丝点击