这在 rsyslog 中可以做到吗?
http://www.rsyslog.com/doc/rsyslog_conf_output.html
此语法无效:
mail.* -/var/log/mail.log:300M
我需要在 rsyslog 而不是 logrotate 中设置这个限制,因为在高流量邮件系统出现某些错误时(甚至在第二天到达 logrotate 之前),日志很快就会填满分区。
答案1
首先,根据你链接的文档,你的语法是错误的,因为 $outchannel 的参数应该用逗号分隔,所以类似
$outchannel mail,/var/log/mail.log, 300000000,/path/to/rotate/script
会更正确。
其次,outchannel 在达到最大大小时会触发一些脚本。它不会停止写入,而是运行脚本并再次检查。因此,您仍然需要一个在触发后减少日志文件大小的脚本。
我认为您误解了 outchannel 命令本身,并且您没有正确阅读您链接的文档,因为它明确指出:
最大大小必须始终以字节为单位指定 - 在开发的这个阶段没有特殊符号(如 1k、1m……)。