logrotate服务
logrotate适合大多数系统日志和应用日志,支持按“大小、时间、个数”配置规则
通过cron(systemd-timer)定时执行,自动检测并执行所有预设轮转机制
配置文件
1 | /etc/logrotate.conf |
配置参数
| 参数类别 | 参数名称 | 说明 | 示例 |
|---|---|---|---|
| 轮转频率 | daily |
每天轮转一次 | daily |
weekly |
每周轮转一次 | weekly |
|
monthly |
每月轮转一次 | monthly |
|
yearly |
每年轮转一次 | yearly |
|
size |
文件达到指定大小时轮转 | size 10M |
|
maxsize |
按大小轮转,优先级高于时间周期 | maxsize 100M |
|
minsize |
文件大于指定大小时才按时间轮转 | minsize 1M |
|
| 文件保留 | rotate |
保留的旧日志文件数量 | rotate 7 |
maxage |
删除超过指定天数的旧日志 | maxage 30 |
|
start |
轮转文件从指定数字开始编号 | start 100 |
|
| 压缩设置 | compress |
使用gzip压缩旧日志 | compress |
nocompress |
不压缩旧日志 | nocompress |
|
delaycompress |
延迟压缩(下次轮转时压缩上一个文件) | delaycompress |
|
compressext |
指定压缩文件后缀 | compressext .gz |
|
compressoptions |
压缩命令的额外选项 | compressoptions --best |
|
| 文件操作 | create |
轮转后创建新文件并设置权限 | create 0644 root root |
nocreate |
不创建新文件 | nocreate |
|
copytruncate |
复制原文件后截断,避免重启服务 | copytruncate |
|
nocopytruncate |
不复制截断 | nocopytruncate |
|
ifempty |
即使文件为空也轮转 | ifempty |
|
notifempty |
如果文件为空则不轮转 | notifempty |
|
missingok |
日志文件不存在时不报错 | missingok |
|
nomissingok |
日志文件不存在时报错(默认) | nomissingok |
|
olddir |
将旧日志移动到指定目录 | olddir /var/log/old |
|
noolddir |
旧日志保留在原目录 | noolddir |
|
extension |
为轮转文件指定扩展名 | extension .log |
|
| 时间格式 | dateext |
使用日期作为轮转文件后缀 | dateext |
dateformat |
指定日期格式 | dateformat -%Y%m%d |
|
| 脚本执行 | prerotate |
轮转前执行的脚本 | prerotate ... endscript |
postrotate |
轮转后执行的脚本 | postrotate ... endscript |
|
firstaction |
第一次匹配到日志文件时执行 | firstaction ... endscript |
|
lastaction |
所有文件轮转完成后执行 | lastaction ... endscript |
|
preremove |
删除旧日志前执行 | preremove ... endscript |
|
| 其他配置 | sharedscripts |
多个文件匹配时只运行一次脚本 | sharedscripts |
nosharedscripts |
每个文件都运行脚本(默认) | nosharedscripts |
|
su |
以指定用户/组执行轮转 | su www-data www-data |
|
include |
包含指定目录的配置文件 | include /etc/logrotate.d |
|
tabooext |
添加或重置不轮转的扩展名列表 | tabooext + .bak .backup |
truncate命令
logrotate实际上每次执行会创建新文件
如果已经有一个单个日志文件达到了100G,现在需要对这个日志文件进行临时处理,并且因为这是容器的日志,所以要求不修改元数据的情况下对日志进行清空(相当于不使用新文件),不然docker就无法识别新的日志了
truncate -s 0 /path/to/your/large.log