码迷,mamicode.com
首页 > 系统相关 > 详细

CentOS Linux使用logrotate分割管理日志

时间:2017-09-14 18:43:07      阅读:325      评论:0      收藏:0      [点我收藏+]

标签:日志切割

logrotate程序是一个日志文件管理工具。用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到“转储”作用。可以节省磁盘空间。


logrotate命令格式:

logrotate [OPTION...] <configfile>

-d, --debug :debug模式,测试配置文件是否有错误。

-f, --force :强制转储文件。

-m, --mail=command :发送日志到指定邮箱。

-s, --state=statefile :使用指定的状态文件。

-v, --verbose :显示转储过程。


logrotate的配置文件是/etc/logrotate.conf。查看缺省配置情况:

cat /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

# uncomment this if you want your log files compressed

#compress

# RPM packages drop log rotation information into this directory

include /etc/logrotate.d

# no packages own wtmp -- we‘ll rotate them here

/var/log/wtmp {

monthly  

minsize 1M

create 0664 root utmp

rotate 1

}

# system-specific logs may be also be configured here.


简单说明:

weekly :所有的日志文件每周转储一次。

rotate 4 :转储的文件分为4份。

create :logrotate自动创建新的日志文件。

compress :压缩日志文件。默认是注释掉的。

include /etc/logrotate.d :读入/etc/logrotate.d目录下的日志转储参数,当系统中安装了RPM软件包时,RPM包的日志转储参数一般会自动建立在/etc/logrotate.d目录下。

/var/log/wtmp段 :对/var/log/wtmp日志转储的配置。


monthly: 日志文件将按月轮循。其它可用值为‘daily’,‘weekly’或者‘yearly’。

rotate 5: 一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。

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

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

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

notifempty: 如果日志文件为空,轮循不会进行。

create 644 root root: 以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。

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


使用logrotate管理lnmp一键安装包中nginx的连接日志,lnmp日志文件在/home/wwwlogs目录下。

建立配置文件:


模板一

/var/log/log-file {

    monthly

    rotate 5

    compress

    delaycompress

    missingok

    notifempty

    create 644 root root

    postrotate

        /usr/bin/killall -HUP rsyslogd

    endscript

}

模板二

vim /etc/logrotate.d/nginx

输入如下:

/home/wwwlogs/access.log /home/wwwlogs/nginx_error.log {

notifempty

daily

rotate 5

sharedscripts

postrotate

/bin/kill -HUP `/bin/cat /usr/local/nginx/logs/nginx.pid`

endscript

}

模板三(我们想要让旧日志文件以创建日期命名,这可以通过添加dateext常熟实现。)

/var/log/log-file {

    monthly

    rotate 5

    dateext

    create 644 root root

    postrotate

        /usr/bin/killall -HUP rsyslogd

    endscript


说明:

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

daily :日志文件每天转储一次。

rotate 5 ;转储文件分为5份。

postrotate/endscript :日志转储后执行的脚本。这里用来让nginx重新生成日志文件。nginx.pid里存的是nginx的主进程号。


执行logrotate:

/usr/sbin/logrotate -vf /etc/logrotate.conf


如果没有报错,生成了转储文件,nginx正常访问,就OK了。


logrotate如何自动执行:

在/etc/cron.daily目录下有logrotate执行的脚本。通过crontab程序每天执行一次。


配置完需要调用

logrotate /etc/logrotate.conf 或者指定 logrotate /etc/logrotate.d/http


本文出自 “IT阿宝” 博客,请务必保留此出处http://907832555.blog.51cto.com/4033334/1965283

CentOS Linux使用logrotate分割管理日志

标签:日志切割

原文地址:http://907832555.blog.51cto.com/4033334/1965283

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!