syslog-ng 配置文件是否支持每 15 分钟轮换一次日志文件?

syslog-ng 配置文件是否支持每 15 分钟轮换一次日志文件?

我使用 syslog-ng 配置文件destination配置来创建每小时日志文件。我为此使用的配置如下:

destination d_hourly {file("/var/log/tracker/pid$PID-track-$YEAR-$MONTH-$DAY-$HOUR.log");};

我现在需要每 15 分钟或 30 分钟创建一次文件。我查看了配置文件宏,但没有这样的宏(在预期的行上)。有没有办法在 syslog-ng 配置中编写一个自定义函数,该函数返回基于当前时间的值,并且可以在 syslog-ng 的目标方向上添加后缀。

或者有其他方法可以实现这一点?

答案1

您可以在行内用数字除以分钟值,这将生成单独的文件。例如:

destination d_half_hourly {file("/var/log/tracker/pid$PID-track-$YEAR-$MONTH-$DAY-$HOUR-$(/ $MIN 30).log");};

由于整数除法,这将把 PID 为 1000 且日期为 2015 年 1 月 23 日 05:00 至 05:29 的所有日志放入

/var/log/tracker/pid1000-track-2015-01-23-05-0.log

05:30 至 05:59 期间

/var/log/tracker/pid1000-track-2015-01-23-05-1.log

您还可以通过将 30 更改为另一个除数来增加频率。

答案2

没有这样的内置函数,但是在较新的 syslog-ng 版本中,您可以在过滤器中进行各种数字比较:http://www.balabit.com/sites/default/files/documents/syslog-ng-ose-3.6-guides/en/syslog-ng-ose-v3.6-guide-admin/html/filters-comparing.html

如果将其与嵌入式日志路径相结合,我认为您可以创建一个满足您需求的配置。例如,类似这样的伪代码(仅用于展示想法,语法上并不正确):

log { source_mysource
   log { filter(is-$MIN-less-than-15) destination(file("/var/log/tracker/pid$PID-track-$YEAR-$MONTH-$DAY-$HOUR-0-15.log")) }
   log { filter(is-$MIN-between-16-and-30) destination(file("/var/log/tracker/pid$PID-track-$YEAR-$MONTH-$DAY-$HOUR-16-30.log")) }
...
}

高血压,

问候,

罗伯特·费凯特

相关内容