linux下系统的日志切割logrotate工具的使用

一、logrotate是什么?

logrotate 实用工具, 旨在简化生成大量日志文件的系统上的日志文件管理,
Logrotate 可以设置为每小时、每天、每周、每月或当日志文件达到一定大小时处理日志文件
通俗的说,编排指定的程序生成的日志, 在指定的时间, 按事先配置好的保存天数进行保留, 删除过期的日志文件,并生成新的日志文件.
logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail .

注: 一般linux操作系统都已安装好logrotate工具
如果没有可参考: https://github.com/logrotate/logrotate 进行安装

二、logrotate配置文件

cat /etc/logrotate.conf

# see "man logrotate" for details
# rotate log files weekly
#  每周转存一次日志文件
weekly

# keep 4 weeks worth of backlogs
# 保留最近4周转存的日志文件
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的注释
#compress

# RPM packages drop log rotation information into this directory
# 引入RPM软件包的日志转存配置文件(安装的rpm软件包的日志转存配置文件都在/etc/logrotate.d目录中)
# 注意,此目录下读入的配置文件中的参数将覆盖全局(/etc/logrotate.conf)文件中的参数
include /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
}

截取wtmp日志配置段进行说明

#定义/var/log/wtmp这个日志文件
/var/log/wtmp {            
			monthly            --每月轮转一次,取代了上面的全局设定的每周轮转一次
			minsize 1M               --定义日志必须要大于1M大小才会去轮转
			create 0664 root utmp    --新的日志文件的权限,属主,属主
			rotate 1               --保留最近一个日志,取代了上面的全局设定的保留四个
}

其它配置参数:


compress                                   通过gzip 压缩转储以后的日志
nocompress                                不做gzip压缩处理
copytruncate                            用于还在打开中的日志文件,把当前日志备份并截断;是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据。
nocopytruncate                           备份日志文件但是不截断
create mode owner group             轮转时指定创建新文件的属性,如create 0777 nobody nobody
nocreate                                    不建立新的日志文件
delaycompress                           和compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress                        覆盖 delaycompress 选项,转储同时压缩。
missingok                                 如果日志丢失,不报错继续滚动下一个日志
errors address                           专储时的错误信息发送到指定的Email 地址
ifempty                                    即使日志文件为空文件也做轮转,这个是logrotate的缺省选项。
notifempty                               当日志文件为空时,不进行轮转
mail address                             把转储的日志文件发送到指定的E-mail 地址
nomail                                     转储时不发送日志文件
olddir directory                         转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir                                   转储后的日志文件和当前日志文件放在同一个目录下
sharedscripts                           运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本
prerotate                                 在logrotate转储之前需要执行的指令,例如修改文件的属性等动作;必须独立成行
postrotate                               在logrotate转储之后需要执行的指令,例如重新启动 (kill -HUP) 某个服务!必须独立成行
daily                                       指定转储周期为每天
weekly                                    指定转储周期为每周
monthly                                  指定转储周期为每月
rotate 5                            一次存储5个日志文件。对于第6个日志文件,时间最久的那个日志文件将被删除。
dateext                                  使用当期日期作为命名格式
dateformat .%s                       配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数
size(或minsize) log-size            当日志文件到达指定的大小时才转储,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem). 当日志文件 >= log-size 的时候就转储。

以下为合法格式:
size = 5 或 size 5 (>= 5 个字节就转储)
size = 100k 或 size 100k
size = 100M 或 size 100M

三、指定多个日志文件并发送旧日志到邮箱

“/var/log/httpd/access.log” /var/log/httpd/error.log {   #  指定多个文件, 如果有特殊字符需要用单引号
		rotate 5
		mail www@my.org
		size 100k        # 超过100k后切换日志, 并把旧的日志发送邮件给www@my.org邮箱
		sharedscripts    # 共享脚本. 下面的postrotate脚本只运行一次.
		postrotate
		/usr/bin/killall -HUP httpd
		endscript
}

四、系统安装nginx rpm包后生成的配置文件如下:

cat /etc/logrotate.d/nginx

/var/log/nginx/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 nginx adm
        sharedscripts
        postrotate
                if [ -f /var/run/nginx.pid ]; then
                        kill -USR1 `cat /var/run/nginx.pid`
                fi
        endscript
}
  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值