Модуль log
Сервер Tarantool’а сохраняет все сообщения об ошибке в файл журнала, указанный в конфигурационном параметре log. Сообщения об ошибке могут быть созданы либо системой с помощью внутреннего кода сервера, либо пользователем с помощью функции log.log_level_function_name
.
Как сказано в описании параметра log_format, записи в журнале могут сохраняться в одном из двух форматов:
- „plain“ (по умолчанию) или
- „json“ (более детально с JSON-метками).
Вот как будет выглядеть запись в журнале после выполнения box.cfg{log_format='plain'}
:
2017-10-16 11:36:01.508 [18081] main/101/interactive I> set 'log_format' configuration option to "plain"
Вот как будет выглядеть запись в журнале после выполнения box.cfg{log_format='json'}
:
{"time": "2017-10-16T11:36:17.996-0600",
"level": "INFO",
"message": "set 'log_format' configuration option to \"json\"",
"pid": 18081,|
"cord_name": "main",
"fiber_id": 101,
"fiber_name": "interactive",
"file": "builtin\/box\/load_cfg.lua",
"line": 317}
Ниже приведен перечень всех функций и элементов модуля log
.
Имя | Назначение |
---|---|
log.error() log.warn() log.info() log.verbose() log.debug() |
Запись сгенерированного пользователем сообщения в файл журнала |
log.logger_pid() | Получение PID регистратора записи в журнале |
log.rotate() | Ротация файла журнала |
-
log.
error
(message) -
log.
warn
(message) -
log.
info
(message) -
log.
verbose
(message) -
log.
debug
(message) Запись созданного пользователем сообщения в файл журнала при условии, что log_level_function_name =
error
илиwarn
, илиinfo
, илиverbose
, илиdebug
.Как поясняется в описании настроек конфигурации log_level, есть семь уровней детализации:
- 1 –
SYSERROR
- 2 –
ERROR
– соответствуетlog.error(...)
- 3 –
CRITICAL
- 4 –
WARNING
– соответствуетlog.warn(...)
- 5 –
INFO
– соответствуетlog.info(...)
- 6 –
VERBOSE
– соответствуетlog.verbose(...)
- 7 –
DEBUG
– соответствуетlog.debug(...)
Например, если уровень
box.cfg.log_level
в данный момент – 5 (по умолчанию), то сообщенияlog.error(...)
,log.warn(...)
иlog.info(...)
будут записываться в файл журнала. Однако, сообщенияlog.verbose(...)
иlog.debug(...)
не будут записываться в файл журнала, поскольку они соответствуют более высоким уровням детализации.Параметры: - message (any) – Как правило, строка. Сообщения могут содержать спецификаторы формата в стиле C: %d или %s, то есть
log.error('...%d...%s', x, y)
сработает, еслиx
– это число, аy
– это строка. В редких случаях сообщения могут представлять собой другие скалярные типы данных или даже таблицы. Поэтомуlog.error({'x',18.7,true})
сработает.
возвращает: nil
Выходное значение будет представлять собой строку в журнале, которая содержит следующее:
- текущая временная отметка,
- название модуля,
- , „W“, „I“, „V“ или „D“ в зависимости от
log_level_function_name
и сообщение
.
Вывода не будет, если
log_level_function_name
соответствует типу больше, чем log_level.- 1 –
$ tarantool
tarantool> box.cfg{log_level=3, log='tarantool.txt'}
tarantool> log = require('log')
tarantool> log.error('Error')
tarantool> log.info('Info %s', box.info.version)
tarantool> os.exit()
$ less tarantool.txt
2017-09-20 ... [68617] main/101/interactive C> version 1.7.5-31-ge939c6ea6
2017-09-20 ... [68617] main/101/interactive C> log level 3
2017-09-20 ... [68617] main/101/interactive [C]:-1 E> Error
Строке „Error“ в файле tarantool.txt
предшествует буква «E».
Строка „Info“ отсутствует, потому что log_level
– 3.