Вы можете использовать
^(?<date>\d{4}-\d{2}-\d{2})[A-Z](?<timestamp>\d{2}:\d{2}:\d{2}\.\d{3}-\d{4})\s+-\s+(?<loglevel>\w+)\s+(?<class>\[\w+\])\s+(?<message>.*)
См. демонстрацию регулярных выражений
Обратите внимание, что в вашем шаблоне \[\w\]{6}
соответствует только [
, одно слово char и шесть ]
символов. В шаблоне временной метки [A-Z][a-z]{1}
требует двух букв, но tere - это одна T
. Для вашего шаблона «класс» требуется слово с заглавной буквы и [A-Z][a-z]+
, но main
- все в нижнем регистре. Вы избегаете -
вне классов символов без необходимости, и вам не удалось избежать буквальной точки в шаблоне.
Подробности
^
- начало строки (?<date>\d{4}-\d{2}-\d{2})
- дата: 4 цифры, -
, 2 цифры, -
, 2 цифры [A-Z]
- заглавная буква ASCII (?<timestamp>\d{2}:\d{2}:\d{2}\.\d{3}-\d{4})
- 2 цифры, :
, 2 цифры, :
, 2 цифры, .
, 3 цифры, -
и 4 цифры \s+-\s+
- -
, заключенные в 1 + пробелы (?<loglevel>\w+)
- 1+ символов слова \s+
- 1+ пробелов (?<class>\[\w+\])
- [
, 1+ символов слова, ]
\s+
- 1+ пробелов (?<message>.*)
- разрешение строки.
Скопируйте и вставьте в fluent.conf
или td-agent.conf
:
<source>
type tail
path /var/log/foo/bar.log
pos_file /var/log/td-agent/foo-bar.log.pos
tag foo.bar
format /^(?<date>\d{4}-\d{2}-\d{2})[A-Z](?<timestamp>\d{2}:\d{2}:\d{2}\.\d{3}-\d{4})\s+-\s+(?<loglevel>\w+)\s+(?<class>\[\w+\])\s+(?<message>.*)/
</source>
Тест :