主页 > 建站 > Centos6.5下限制apache、nginx日志文件大小

Centos6.5下限制apache、nginx日志文件大小

2015年10月20日 Centos6.5下限制apache、nginx日志文件大小无评论 阅读: 11,022 次

logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。
主流Linux发行版上都默认安装有logrotate包,如果没有,你可以使用yum命令来安装:
yum install logrotate crontabs

logrotate的配置文件在/etc/logrotate.conf,通常不需要对它进行修改。日志文件的轮循设置在独立的配置文件中,它(们)放在/etc/logrotate.d/目录下。

/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
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d</code>
 
# 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.

第三行weekly 指定所有的日志文件每周转储一次。
第五行 rotate 4 指定转储文件的保留 4份。
第七行create 指定 logrotate 自动建立新的日志文件,新的日志文件具有和原来的文件一样的权限。
第11行 #compress 指定不压缩转储文件,如果需要压缩,去掉注释就可以了。
第13行使用include 选项读取 /etc/logrotate.d下的所有配置文件,用户自定义的日志处理文件一般放在 /etc/logrotate.d下

比如我们想对apache、nginx的日志进行处理,在/etc/logrotate.d下创建一个文件,如weblog,内容如下:
/www/wdlinux/nginx/logs/error.log{
}
/www/wdlinux/nginx/logs/access.log {
}
/www/wdlinux/wdapache/logs/*log{
}
将日志文件的位置写上去即可按/etc/logrotate.conf文件定义的全局规则进行备份,如果要自定义,比如access.log文件较大,要每日备份:
/www/wdlinux/nginx/logs/error.log{
missingok
notifempty
postrotate
if [ -f /www/wdlinux/nginx/logs/nginx.pid ]; then
kill -USR1 `cat /www/wdlinux/nginx/logs/nginx.pid`
fi
endscript
}
/www/wdlinux/nginx/logs/access.log {
daily
rotate 10
missingok
notifempty
postrotate
if [ -f /www/wdlinux/nginx/logs/nginx.pid ]; then
kill -USR1 `cat /www/wdlinux/nginx/logs/nginx.pid`
fi
endscript
}
/www/wdlinux/wdapache/logs/*log{
missingok
notifempty
postrotate
if [ -f /www/wdlinux/wdapache/logs/httpd.pid ]; then
kill -USR1 `cat /www/wdlinux/wdapache/logs/httpd.pid`
fi
endscript
}
daily:每天轮询
rotate 10:保留最多3次滚动的日志
missingok:如果日志丢失,不报错继续滚动下一个日志
notifempty:当日志为空时不进行滚动
postrotate/endscript为滚动时需执行的动作

主要参数:
参数 功能
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).

 

空转测试:

logrotate -d /etc/logrotate.d/weblog

强制测试:

logrotate -vf /etc/logrotate.d/weblog

发表评论

新用户的评论需审核后才会显示;

电子邮件地址不会被公开;
必填项已用*标注