Уровни логирования
Доступны шесть уровней: - all - debug - info - warn - error - off
Пример logging.json:
{
"includes": [],
"appenders": [{
"name": "consoleout",
"type": "console",
"args": {
"stream": "std_out",
"level_colors": [{
"level": "debug",
"color": "green"
},{
"level": "warn",
"color": "brown"
},{
"level": "error",
"color": "red"
}
]
},
"enabled": true
},{
"name": "net",
"type": "gelf",
"args": {
"endpoint": "10.10.10.10",
"host": "test"
},
"enabled": true
}
],
"loggers": [{
"name": "default",
"level": "info",
"enabled": true,
"additivity": false,
"appenders": [
"consoleout",
"net"
]
},{
"name": "net_plugin_impl",
"level": "debug",
"enabled": true,
"additivity": false,
"appenders": [
"net"
]
}
]
}
Смысл уровней¶
error— события, вероятно требующие вмешательства оператора.- Уровень
errorстоит оставлять для неожиданных ситуаций или тех, где нужен человек. - Также для явных ошибок ПО: невозможные значения перечислений, выход за границы массива, нулевые указатели и т.п., часто ведущие к исключению.
- Замечание: сейчас много сообщений с уровнем
errorлогичнее отнести кwarn— например, вnet_plugin_implдля плохих сетевых соединений, которые обрабатываются штатно; такие случаи лучше перевести наwarnилиinfo. warn— неожиданное, но восстановимое.- Обычно не требует немедленного вмешательства, но частые
warnмогут сигнализировать о действиях оператора. warnне стоит использовать просто как «информацию» — это сигнал обратить внимание, без обязательной тревоги.info(по умолчанию) — полезная оператору информация.- Прогресс и полезные данные; стараются не засыпать логом: например, не логировать каждую транзакцию на
info. - Для прогресса логируют через интервалы, например каждые 1000 транзакций.
debug— детали при включённом нетипичном логировании.- Вопрос: полезно ли это оператору, смотрящему лог. Объём как у
info: не раздувать. - Включение
debugдолжно прояснять поведение без лавины строк. debugне заменяет трассировку; для неё —all(см. ниже).- Как и для
info, не логировать каждую транзакцию наdebug; для транзакций есть отдельные логгеры:transaction,transaction_trace_failure,transaction_trace_success,transaction_failure_tracing,transaction_success_tracing,transient_trx_success_tracing,transient_trx_failure_tracing. all(trace) — то, что приdebugзасыпало бы лог.- Трассировочный уровень; поддержан частично.
- Замечание: в будущем другая библиотека логирования может дать лучшую трассировку; текущая среда не рассчитана на огромный объём trace-вывода.