Как отфильтровать mail.info из / var / log / syslog (rsyslog.conf / Debian), сохраняя при этом сообщения больше или равные mail.warn?
Я пробовал практически все варианты добавления и добавления различных комбинаций mail, mail.info, mail.!info, mail.*, mail.warn, mail.!warn
, но очевидно документы умнее меня.
Сейчас я занимаюсь этим, но, увы, она не подходит:
*.*;auth,authpriv.none;mail.warn,mail.!info -/var/log/syslog
Редактировать: Мне очень трудно понять разделитель точки с запятой и то, как он «ограничивает» предыдущие записи.
Из man rsyslog.conf
страница:
Rsyslogd имеет расширение синтаксиса исходного исходного кода BSD, что делает его использование более интуитивно понятным. Вы можете ставить перед каждым приоритетом знак равенства (
=
), чтобы указать только этот единственный приоритет, а не что-либо из вышеперечисленного. Вы также можете (оба допустимы) перед приоритетом поставьте восклицательный знак (!
), чтобы игнорировать все эти приоритеты, либо точно этот, либо этот и любой более высокий приоритет. Если вы используете оба расширения, а восклицательный знак должен стоять перед знаком равенства, просто используйте его интуитивно.
Так mail.!info
означает, что вы игнорируете info
приоритет и любой более высокий приоритет. Попробуй это:
*.*;auth,authpriv.none;mail.warn,mail.!=info -/var/log/syslog
Я нашел несколько других вариантов ответа квантов, которые, похоже, тоже работают. У меня есть представление о том, почему они работают, но я недостаточно уверен в разделителях и операторах rsyslog.conf, чтобы сказать наверняка. Надеюсь, они помогут кому-то другому.
Один.
*.*;\
auth,authpriv.none;\
mail.!info,mail.warn -/var/log/syslog
Два.
*.*;\
mail.none;\
mail.error;\
auth,authpriv.none -/var/log/syslog
Любые комментарии по этому поводу от кого-то, кто знает лучше, будут приветствоваться.