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
# packages drop log rotation information into this directory
include /etc/logrotate.d
# system-specific logs may be also be configured here.
logrotate.rsyslog
# /etc/logrotate.d/rsyslog - Modified for specific needs
/var/log/messages
/var/log/ecs_mfp_debug.log
/var/log/ecs_mfp_run.log
/var/log/ecs_mfp_oper.log
{
maxsize 50M
rotate 5
daily
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/bin/pkill -HUP rsyslogd 2> /dev/null || true
endscript
}
/log/ecs_mfp_start_log
{
size 2M
rotate 3
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/bin/pkill -HUP rsyslogd 2> /dev/null || true
endscript
}
/release/conf_auto_backup.tar.gz
{
rotate 10
dateext
daily
missingok
compress
sharedscripts
postrotate
tar zcf /release/conf_auto_backup.tar.gz /release/conf
endscript
}
在 logrotate.conf
和 logrotate.rsyslog
文件中定义的 rotate
指令确实有区别,主要体现在应用范围和配置继承方面。以下是详细解释:
1. 配置的作用范围
-
logrotate.conf
文件:rotate 4
在logrotate.conf
中定义,这是一个全局配置项,适用于所有未在特定配置文件中覆盖的日志文件。- 这意味着,如果某个日志文件的轮替配置没有单独指定
rotate
,则默认情况下,logrotate.conf
中的rotate 4
设置将被应用。换句话说,日志文件会保留最近的 4 个备份版本。
-
logrotate.rsyslog
文件:rotate 5
是在logrotate.rsyslog
中为特定的日志文件单独定义的。例如,/var/log/messages
和/var/log/ecs_mfp_*.log
系列文件。- 这意味着这些日志文件会保留最近的 5 个备份版本,而不是继承
logrotate.conf
中的全局设置。rotate 5
覆盖了全局配置,使这些文件的备份数量独立于全局设置。
2. 配置的优先级
- 全局配置与特定配置:
logrotate.conf
中的rotate 4
是全局配置,适用于所有未在单独配置文件中指定的日志文件。logrotate.rsyslog
中的rotate 5
是针对具体日志文件的配置,具有更高的优先级。因此,对于/var/log/messages
和其他指定的日志文件,系统将保留 5 个备份,而不是全局的 4 个备份。
3. 总结
- 全局设置(logrotate.conf):
- 适用于未在特定配置文件中指定的日志文件。全局设置的
rotate 4
表示保留 4 个日志备份。
- 适用于未在特定配置文件中指定的日志文件。全局设置的
- 特定设置(logrotate.rsyslog):
- 针对指定的日志文件,
rotate 5
表示保留 5 个日志备份。这一设置覆盖了全局配置。
- 针对指定的日志文件,
因此,rotate
在这两个文件中的定义并不冲突,而是体现了配置的继承和覆盖原则。logrotate.rsyslog
中的设置更为具体,应用于特定的日志文件,而 logrotate.conf
中的设置则作为全局默认配置,适用于未被特定文件覆盖的日志文件。