我已经在 CentOS 上实现了 syslog 服务器,并使用下面的模板每天生成输出文件 -
$template TmplNationalIP_PL, "/var/log/NIPFW/MX480/CGNAT_PL_%$year%.%$month%.%$day%"
if ($msg contains 'OR_NAT' and $msg contains '55.91.165.') then ?TmplNationalIP_PL
& ~
与上面(每天)类似,我希望每小时(而不是每天)分割系统日志文件。
由于找不到任何可供使用的 HOURLY 变量,如何按小时拆分系统日志消息文件?
另外,我正在使用 logrotate + cron 作业,但没有选项可以在 logrotate 中每小时轮换(最小值是每天)。
下面是摘自猫 /etc/logrotate.d/syslog
/var/log/NIPFW/MX480
{
rotate 50
daily
copytruncate
missingok
notifempty
compress
delaycompress
dateext
maxage 30
sharedscripts
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
答案1
cron 和 logrotate
该脚本/etc/cron.daily/logrotate
位于 daily 文件夹中。
您必须将其移动到配置文件中/etc/cron.hourly
并更改daily
为。hourly
答案2
基于小时的系统属性rsyslog
适当地称为“$hour”。这记录在rsyslog 属性页。
因此,您可以如下所示修改模板以生成每小时日志文件:
$template TmplNationalIP_PL,"/var/log/NIPFW/MX480/CGNAT_PL_%$year%.%$month%.%$day%.%$hour%"