linux管理日志文件,修改日志保存期限

在Linux系统中,/etc/logrotate.conf是一个配置文件,用于管理日志文件的轮转(log rotation)。日志轮转是一种维护日志文件的机制,它可以限制日志文件的大小,防止过大的日志文件占据过多的磁盘空间,同时保留一定数量的旧日志文件以供后续分析。logrotate工具会根据配置文件中的规则定期地轮转和管理日志文件。

1.以下是/etc/logrotate.conf文件的一般配置及其解释:

rotate count:指定保留的旧日志文件数量。例如:rotate 7表示保留7个旧的日志文件。
daily、weekly、monthly:指定日志轮转的频率,可以选择每天、每周或每月进行一次轮转。
missingok:如果指定的日志文件不存在,继续进行轮转而不报错。
notifempty:如果日志文件为空,不执行轮转操作。
compress:启用压缩功能,轮转后的旧日志文件会被压缩。
delaycompress:推迟压缩,新生成的日志文件不会被立即压缩,而是等到下一次轮转时才进行压缩。
copytruncate:在轮转前先复制日志文件,然后将原始文件截断,这样可以防止正在写入的进程被中断。
create mode owner group:指定轮转后新生成的日志文件的权限、所有者和所属组。
postrotate 和 endscript:在轮转后执行的自定义命令,可以用来实现额外的操作,如重新启动相关的服务。
size:指定触发轮转的日志文件大小,例如:size 10M表示当日志文件达到10MB时触发轮转。
maxsize:设置日志文件的最大大小,超过此大小时必定触发轮转。
dateext:在生成旧日志文件名时添加时间戳,以区分不同时间的日志。
dateformat:指定日期时间戳的格式。
olddir:将旧的日志文件移动到指定的目录,而不是删除。
su:指定运行轮转脚本的用户。

2.举例:

/var/log/myapp.log {
    rotate 180  # 30 days * 6 months = 180 rotations
    monthly
    compress
    delaycompress
    missingok
    notifempty
    create 0640 username groupname
    dateext
    dateformat -%Y%m%d
}

在这个示例中,/var/log/myapp.log是你想要进行日志轮转的日志文件路径。配置中的主要选项是:

rotate 180:这会保留180个旧的日志文件,对应六个月的时间(每个月30天)。
monthly:设置为按月轮转。
compressdelaycompress:启用压缩,并延迟压缩操作。
missingok:如果日志文件不存在,继续进行轮转。
notifempty:如果日志文件为空,不执行轮转操作。
create 0640 username groupname:设置新生成的日志文件的权限、所有者和所属组。
dateext:在生成旧日志文件名时添加时间戳。
dateformat -%Y%m%d:指定时间戳的格式为年月日。
*确保将/var/log/myapp.log替换为实际的日志文件路径,以及将username和groupname替换为适当的用户名和组名。

3.配置(单独配置或全局配置)

如果你需要对多个日志文件进行不同的配置,可以在/etc/logrotate.d/目录中创建单独的配置文件,每个文件针对一个日志文件进行配置。这样可以更灵活地管理不同日志的轮转规则。
在这里插入图片描述
由于 /etc/logrotate.conf 文件是全局配置文件,它的配置会被应用到所有日志文件上。而 /etc/logrotate.d/ 目录中的每个文件可以用于单独配置某些特定的日志文件。所以你需要选择在哪里配置 某个日志的(如:/var/log/alternatives.log) 的轮转规则。

举例来说就是如果你想要在 /etc/logrotate.conf 中全局配置 /var/log/alternatives.log,那么请删除 /etc/logrotate.d/ 目录下与 /var/log/alternatives.log 相关的文件。或者,如果你想要在 /etc/logrotate.d/ 目录中配置 /var/log/alternatives.log,就将该文件中的配置删除,确保 /etc/logrotate.conf 中没有针对该文件的重复配置。
在这里插入图片描述
在这里插入图片描述
在大多数情况下,你不需要重启日志服务来应用logrotate的配置更改。logrotate是一个独立的工具,它会根据配置文件中的设置自动进行日志轮转和管理,无需手动干预。

当logrotate执行轮转时,它会检查配置文件中的设置,判断是否需要执行轮转操作。通常,这个过程会由定时任务(cronjob)自动触发。系统上通常会有一个由cron配置的定时任务来定期运行logrotate,你可以查看/etc/cron.daily/logrotate文件,它负责每天执行一次日志轮转。

所以,一旦你修改了logrotate的配置文件,等待定时任务执行下一次轮转时,新的配置就会生效,无需手动重启日志服务。

4.配置生效测试

如果你想要立即测试配置是否生效,你可以手动运行logrotate命令:

logrotate -f /etc/logrotate.conf

这会强制执行一次logrotate操作,使用指定的配置文件。请注意,-f选项会强制执行轮转,不管是否满足轮转条件。在实际环境中,定时任务会在适当的时间自动执行轮转操作。

重启日志服务的命令

 systemctl restart rsyslog
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霜!!

不错,👆赏!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值