Можно ли это вообще сделать в rsyslog ?
http://www.rsyslog.com/doc/rsyslog_conf_output.html
Этот синтаксис не работает:
mail.* -/var/log/mail.log:300M
Мне нужно установить это ограничение в rsyslog вместо logrotate, потому что журнал может быстро заполнить раздел на случай какой-либо ошибки (даже до того, как он будет запущен на следующий день) с почтовой системой с высоким трафиком.
Прежде всего, согласно документу, на который вы ссылаетесь, ваш синтаксис неверен, так как аргументы $ outchannel должны быть указаны через запятые, поэтому более правильным будет что-то вроде
$outchannel mail,/var/log/mail.log, 300000000,/path/to/rotate/script
.
Во-вторых, выходной канал запускает некоторый сценарий при достижении максимального размера. Он не просто перестает писать, но запускает сценарий и снова проверяет. Таким образом, вам все равно понадобится сценарий, который уменьшает размер файла журнала после его запуска.
Я думаю, вы неправильно поняли саму команду outchannel, и вы неправильно прочитали документ, на который вы ссылаетесь, поскольку он явно заявляет:
Максимальный размер всегда должен указываться в байтах - специальных символы (например, 1k, 1m, ...) на данном этапе разработки.