rsyslog 限制日志大小

0 postfix logrotate rsyslog

这甚至可以在 rsyslog 中做到吗?

http://www.rsyslog.com/doc/rsyslog_conf_output.html

此语法不起作用:

mail.*              -/var/log/mail.log:300M
Run Code Online (Sandbox Code Playgroud)

我需要在 rsyslog 而不是 logrotate 中设置这个限制,因为日志可以快速填满分区,以防出现某些错误(甚至在第二天进入 logrotate 之前)高流量邮件系统。

小智 6

首先,根据您链接的文档,您的语法是错误的,因为 $outchannel 的参数应以逗号分隔,因此类似于

$outchannel mail,/var/log/mail.log, 300000000,/path/to/rotate/script
Run Code Online (Sandbox Code Playgroud)

会更正确。

其次,外信道在达到最大尺寸时触发一些脚本。它不仅会停止写入,还会运行脚本并再次检查。因此,您仍然需要一个脚本来在触发后减小日志文件的大小。

我认为您误解了 outchannel 命令本身,并且您没有正确阅读链接到的文档,因为它明确指出:

max-size 必须始终以字节为单位指定 - 在开发阶段没有特殊符号(如 1k、1m...)。