Версия:

Пример записи в журнал
Пример записи в журнал

Пример записи в журнал

log_level

Уровень детализации записей журнала. Есть 7 уровней:

  • 1 – SYSERROR
  • 2 – ERROR
  • 3 – CRITICAL
  • 4 – WARNING
  • 5 – INFO
  • 6 – VERBOSE
  • 7 – DEBUG

Задав значение параметра log_level, можно включить запись в журнал всех событий заданного уровня или ниже. По умолчанию, Tarantool выводит записи в стандартный поток сообщений об ошибках, но это можно изменить с помощью конфигурационного параметра log.

Тип: целое число
По умолчанию: 5
Динамический: да

Внимание: до версии Tarantool’а 1.7.5 было только 6 уровней, из них шестым был уровень DEBUG. Начиная с версии Tarantool’а 1.7.5 VERBOSE становится уровнем 6, а DEBUG – уровнем 7. VERBOSE представляет собой новый уровень для мониторинга повторяющихся событий, которые бы привели к слишком большому количеству записей журнала при использовании уровня INFO.

log

По умолчанию, Tarantool выводит записи в стандартный поток сообщений об ошибках (stderr). Если задан параметр log, Tarantool отправит записи журнала в файл, в конвейер или в системный журнал syslog.

Пример настройки для отправки журнала в файл:

box.cfg{log = 'tarantool.log'}
-- или
box.cfg{log = 'file:tarantool.log'}

Откроется файл tarantool.log для вывода в директории сервера, используемой по умолчанию. Если в строке log нет префикса или есть префикс «file:», то строка считается путем к файлу.

Пример настройки для отправки журнала в конвейер:

box.cfg{log = '| cronolog tarantool.log'}
-- или
box.cfg{log = 'pipe: cronolog tarantool.log'}'

Запустится программа cronolog при запуске сервера, которая будет отправлять все сообщения журнала на стандартный вывод (stdin) в cronolog. Если строка log начинается с „|“ или содержит префикс «pipe:», то строка считается Unix-конвейером.

Пример настройки для отправки журнала в системный журнал syslog:

box.cfg{log = 'syslog:identity=tarantool'}
-- or
box.cfg{log = 'syslog:facility=user'}
-- or
box.cfg{log = 'syslog:identity=tarantool,facility=user'}
-- or
box.cfg{log = 'syslog:server=unix:/dev/log'}

Если строка log начинается с «syslog:», это считается сообщением для программы syslogd, которая, как правило, работает в фоне на любой Unix-платформе. Настройка может быть: „syslog:“, „syslog:facility=…“, „syslog:identity=…“, „syslog:server=…“, или их комбинация.

Настройка syslog:identity представляет собой произвольную строку, которая размещается в начале всех сообщений. По умолчанию: tarantool.

В настоящий момент настройка syslog:facility не учитывается, но будет использоваться в дальнейшем. Ее значением должно быть одно из ключевых слов syslog, которые сообщают программе syslogd, куда отправлять сообщение. Возможные значения: auth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, syslog, user, uucp, local0, local1, local2, local3, local4, local5, local6, local7. По умолчанию: user.

Настройка syslog:server – это указатель для сервера syslog. Это может быть путь к сокету Unix, который начинается с «unix:», или же номер IPv4-порта. Значение по умолчанию для сокета: dev/log (в Linux) или /var/run/syslog (в Mac OS). Значение по умолчанию для порта: 514, UDP-порт.

При записи в файл Tarantool повторно открывает журнал при сигнале SIGHUP. Если журнал является программой, его PID сохраняется в переменной log.logger_pid. Необходимо отправить сигнал для ротации файлов журнала.

Тип: строка
По умолчанию: null
Динамический: нет
log_nonblock

Если значение log_nonblock равно true (правда), Tarantool не блокируется, когда система не может вести запись, а вместо этого сбрасывает сообщение. Если задан высокий уровень log_level,и много сообщений попадают в файл журнала, перевод log_nonblock в true может улучшить производительность ценой потери некоторых сообщений журнала.

Данный параметр сработает, только если вывод производится в «syslog:» или «pipe:». Нельзя задать log_nonblock = true, если вывод производится в файл.

По умолчанию задано нулевое значение nil для log_nonblock, что означает, что поведение при блокировке зависит от типа записи. Поведение изменилось: в ранних версиях Tarantool’а, по умолчанию использовалось значение true (правда).

Тип: логический
По умолчанию: nil
Динамический: нет
too_long_threshold

Если обработка запроса занимает дольше времени, чем заданное значение (в секундах), в журнал заносится соответствующее предупреждение. Сработает, только если в log_level задан уровень 4 (WARNING) или выше.

Тип: число с плавающей запятой
По умолчанию: 0.5
Динамический: да
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_format='plain') запись содержит время, идентификатор процесса, имя файбера, идентификатор файбера fiber_id, имя файбера fiber_name, уровень записи в журнал и сообщение.

В JSON-формате (log_format='json') запись содержит все вышеперечисленное с соответствующими метками, а также имя файла и номер строки Tarantool-источника.

Запрещается устанавливать значение „json“ для log_format, если вывод производится в «syslog:».

Тип: строка
По умолчанию: „plain“
Динамический: да

Пример записи в журнал

Данный пример проиллюстрирует ротацию файлов журнала, то есть что происходит, когда экземпляр сервера производит запись в журнал? а при архивировании используются сигналы.

Запустите две оболочки, терминал №1 и терминал №2.

На терминале №1 запустите интерактивную сессию Tarantool’а, затем укажите, что запись в журнал ведется в файл Log_file, а затем поместите сообщение «Log Line #1» в файл журнала:

box.cfg{log='Log_file'}
 log = require('log')
 log.info('Log Line #1')

На терминале №2 используйте команду mv, чтобы файл журнала назывался Log_file.bak. Результатом будет то, что следующее сообщение журнала пойдет в файл Log_file.bak.

mv Log_file Log_file.bak

На терминале №1 поместите сообщение «Log Line #2» в файл журнала.

log.info('Log Line #2')

На терминале №2 используйте команду ps, чтобы найти ID процесса экземпляра Tarantool’а.

ps -A | grep tarantool

На терминале №2 используйте команду kill -HUP для отправки сигнала SIGHUP на экземпляр Tarantool’а. Результат: Tarantool снова откроет Log_file, и следующее сообщение журнала пойдет в Log_file. (Тот же результат можно получить путем выполнения команды log.rotate() на экземпляре.)

kill -HUP process_id

На терминале №1 поместите сообщение «Log Line #3» в файл журнала.

log.info('Log Line #3')

На терминале №2 используйте команду less для просмотра файлов. Log_file.bak будет содержать следующие строки, но дата и время будут указаны в зависимости от времени выполнения примера:

2015-11-30 15:13:06.373 [27469] main/101/interactive I> Log Line #1`
2015-11-30 15:14:25.973 [27469] main/101/interactive I> Log Line #2`

а Log_file будет содержать

log file has been reopened
2015-11-30 15:15:32.629 [27469] main/101/interactive I> Log Line #3

Обратная связь

По умолчанию, демон Tarantool’а отправляет небольшой пакет каждый час на https://feedback.tarantool.io. Пакет содержит три значения из box.info: box.info.version, box.info.uuid и box.info.cluster_uuid. Изменив конфигурационные параметры обратной связи, пользователи могут настроить или отключить эту функцию.

feedback_enabled

Отправлять обратную связь или нет.

Если задано значение true, обратная связь будет отправлена, как описано выше. Если задано значение false, обратная связь не отправляется.

Тип: логический
По умолчанию: true
Динамический: да
feedback_host

Адрес, на который отправляется пакет. Как правило, получателем будет Tarantool, но можно указать любой URL.

Тип: строка
По умолчанию: „https://feedback.tarantool.io
Динамический: да
feedback_interval

Количество секунд между отправками, обычно 3600 (1 час).

Тип: число с плавающей запятой
По умолчанию: 3600
Динамический: да