v2.1Руководство
Встроенные форматы
Пять форматов, которые Сверло понимает без настройки, и поля, которые каждый из них даёт.
Формат выбирается параметром format в createParser. Если ни один не подходит, опишите строку своим шаблоном.
Сводка#
| Формат | Пример строки | Поля в rec.fields |
|---|---|---|
nginx-combined | 10.0.0.7 - - [01/Oct/2026:09:14:07 +0000] "GET /a HTTP/1.1" 200 512 "-" "curl/8" | ip, method, path, status, bytes, referer, agent |
json-lines | {"time":"2026-10-01T09:14:07Z","level":"warn","msg":"slow"} | все ключи объекта, кроме служебных |
logfmt | ts=2026-10-01T09:14:07Z level=info msg="started" port=8080 | все пары ключ=значение |
syslog | <34>Oct 1 09:14:07 host app[231]: failed login | host, app, pid, facility |
custom | задаётся pattern | поля из шаблона |
nginx-combined#
Время берётся из [день/месяц/год:время зона]. Если в строке есть request_time в конце, как в расширенном формате, поле добавляется числом. Статус и размер всегда числа, прочерк - превращается в null.
json-lines#
Одна строка — один объект. Имена времени и уровня ищутся среди ts, time, timestamp, @timestamp и level, lvl, severity. Сообщение берётся из msg или message. Остальные ключи уходят в rec.fields без изменений, вложенные объекты сохраняются как есть.
{"time":"2026-10-01T09:14:07Z","level":"warn","msg":"slow query","ms":812,"table":"orders"}logfmt#
Значения в кавычках могут содержать пробелы и экранированные кавычки. Значение без кавычек заканчивается пробелом. Числа и true/false приводятся к своим типам, если не задать typed: false.
syslog#
Поддерживается классический формат RFC 3164. Год в такой строке не указан, поэтому его нужно передать: createParser({ format: 'syslog', year: 2026 }). Без параметра берётся текущий год, и для декабрьских логов, прочитанных в январе, это даст неверную дату.
Таймзона
Если в строке нет смещения, время считается локальным временем процесса. На сервере это обычно UTC, на ноутбуке разработчика нет. Задавайте timezone: 'UTC' явно, чтобы результат не зависел от машины.