Версия:

Модуль log

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

    Usually a string.

    Сообщения могут содержать спецификаторы формата в стиле C: %d или %s, то есть log.error('...%d...%s', x, y) сработает, если x – это число, а y – это строка.

    Less commonly, messages may be other scalar data types, or even tables. So log.error({'x',18.7,true}) will work.

возвращается:

nil

The actual output will be a line in the log, containing:

  • текущая временная отметка,
  • название модуля,
  • , „W“, „I“, „V“ или „D“ в зависимости от log_level_function_name и
  • сообщение.

Вывода не будет, если log_level_function_name соответствует типу больше, чем log_level.

log.logger_pid()
возвращается:PID регистратора записи в журнале
log.rotate()

Ротация журнала.

возвращается:nil

Пример

$ 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.