Модуль 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.