Событие разделителя logstash в log4net.log, которое может содержать несколько строк

введите здесь описание изображения

Вот типичный файл журнала, созданный из log4net

Итак, этот файл журнала читается при вводе файла logstash плагин.

По умолчанию delimiter в конфигурации - \n, что означает, что каждая строка является событием.

Но в файле журнала выше вы можете видеть, что для одного события может быть несколько строк. (например, ОШИБКА или НЕИСПРАВНОСТЬ или другие)

Как настроить Logstash для правильного определения границ события?

Полагаю, я мог бы настроить несколько разделителей, например \nINFO \nDEBUG \nERROR \nFAULT. Но в документе говорится, что может быть только один разделитель.


person Mr.Wang from Next Door    schedule 28.07.2015    source источник


Ответы (2)


Следующая конфигурация должна правильно разграничивать ваши события.

Конфигурация ввода:

input { 
    file {
        path => "/absolute/path/here.log"
        type => "log4net"
        codec => multiline {
                    pattern => "^(DEBUG|WARN|ERROR|INFO|FATAL)"
                    negate => true
                    what => previous
                }
      }
}
person hurb    schedule 28.07.2015

У вас есть многострочное событие. Вам поможет кодек, обработать это.

Основная идея состоит в том, чтобы определить шаблон, который идентифицирует начало записи журнала (в вашем случае, уровень журнала), а затем свернуть все остальные строки в предыдущую.

person Alain Collins    schedule 28.07.2015
comment
Правильный ответ. Я только что добавил пример конфигурации. - person hurb; 28.07.2015
comment
Кто-то отредактировал этот ответ, так как кажется, что многострочный фильтр был удален в LS5. Поскольку я знаю, что многие люди используют более старые версии, я просто добавлю эту опцию в качестве комментария. - person Alain Collins; 24.04.2017