v2.1Руководство
Многострочные записи
Как склеить стек-трейсы и другие продолжения в одну запись параметром multiline.
Исключение в Java или Node печатается на десятках строк, но по смыслу это одна запись. Параметр multiline задаёт правило, по которому строка считается продолжением предыдущей.
const parser = createParser({
pattern: '{ts:iso} {level:level} {msg:rest}',
multiline: { continuation: /^(\s+at |Caused by:|\.\.\. \d+ more)/ }
});Все строки, подходящие под continuation, дописываются к rec.msg через перевод строки. Первая строка записи по-прежнему разбирается шаблоном.
Два способа описать границу#
| Параметр | Когда использовать |
|---|---|
continuation | Известно, как выглядит продолжение: отступ, at , Caused by: |
start | Известно, как выглядит начало записи: например, дата в начале строки. Всё, что не подошло, приклеивается к предыдущей записи |
Укажите один из двух. Если заданы оба, при создании разборщика будет ошибка E_PATTERN.
Лимиты#
Запись, которая растёт бесконечно, например лог без дат в начале строк, опасна для памяти. Поэтому действуют два предела:
multiline.maxLines— по умолчанию 200 строк в записи, остальное отбрасывается, а вrec.fields.truncatedпишетсяtrue;- общий
maxLineLengthприменяется к каждой строке отдельно.
Пример результата#
2026-10-01T09:14:07Z ERROR api: unhandled
at handler (/srv/app.js:42:11)
at next (/srv/router.js:7:3)
2026-10-01T09:14:08Z INFO api: okИз четырёх строк получатся две записи: у первой msg содержит три строки, у второй одну. Номер строки начала записи лежит в rec.line.
Порядок важен
Продолжение приклеивается только к предыдущей записи. Если файл начинается со строки продолжения, она пропускается с ошибкой E_NO_MATCH: приклеивать её не к чему.