Базовая конфигурация rsyslog

У меня есть запись программы в Syslog, и я хочу разделить эти сообщения на отдельные файлы.

Я хочу, чтобы все сообщения, сгенерированные MyApp, отправлялись на /var/log/my_app.log, а все сообщения, созданные warn или более серьезными, также отправлялись на /var/log/my_app.err.

Я не хочу, чтобы сообщения заканчивались на /var/log/syslog, как сейчас.

Я создал новый файл конфигурации rsyslog /etc/rsyslog.d/10-my_app.conf, в котором у меня есть:

if $programname == 'MyApp'
then
{
        if $pri <= 4
        then
        {
                /var/log/my_app.err
        }

        /var/log/my_app.log
        & stop
}

Но работает только частично. Все сообщения попадают в my_app.log, половина сообщений по-прежнему появляется в syslog, а в my_app.err ничего не появляется.


person aidan    schedule 01.07.2019    source источник


Ответы (1)


Я нашел решение:

if $programname == 'MyApp'
then
{
    *.warning /var/log/my_app.err
    *.* /var/log/my_app.log
    & stop
}

Половина проблемы заключалась в том, что мой файл конфигурации загружался после другого файла, который записывал мои строки в /var/log/syslog до того, как я успел их удалить, поэтому мне нужно было изменить имена некоторых файлов, чтобы исправить это.

person aidan    schedule 02.07.2019