Журналирование
Каждый экземпляр Tarantool записывает события в собственный файл журнала. Для экземпляров, запущенных с помощью утилиты
tt, расположение журнала определяется параметром log_dir в
конфигурации tt. По умолчанию это директория /var/log/tarantool в
системном режиме tt и поддиректория var/log рабочей
директории tt в локальном режиме. В указанном расположении
tt создает отдельные директории для журналов каждого экземпляра.
Чтобы проверить, как работает журналирование, запишите что-нибудь в журнал с помощью модуля log:
$ tt connect application• Connecting to the instance...• Connected to applicationapplication> require('log').info("Hello for the manual readers")---...
Затем проверьте содержимое журнала:
$ tail instances.enabled/application/var/log/instance001/tt.log2024-04-09 17:34:29.489 [49502] main/106/gc I> wal/engine cleanup is resumed2024-04-09 17:34:29.489 [49502] main/104/interactive/box.load_cfg I> set 'instance_name' configuration option to "instance001"2024-04-09 17:34:29.489 [49502] main/104/interactive/box.load_cfg I> set 'custom_proc_title' configuration option to "tarantool - instance001"2024-04-09 17:34:29.489 [49502] main/104/interactive/box.load_cfg I> set 'log_nonblock' configuration option to false2024-04-09 17:34:29.489 [49502] main/104/interactive/box.load_cfg I> set 'replicaset_name' configuration option to "replicaset001"2024-04-09 17:34:29.489 [49502] main/104/interactive/box.load_cfg I> set 'listen' configuration option to [{"uri":"127.0.0.1:3301"}]2024-04-09 17:34:29.489 [49502] main/107/checkpoint_daemon I> scheduled next checkpoint for Tue Apr 9 19:08:04 20242024-04-09 17:34:29.489 [49502] main/104/interactive/box.load_cfg I> set 'metrics' configuration option to {"labels":{"alias":"instance001"},"include":["all"],"exclude":}2024-04-09 17:34:29.489 [49502] main I> entering the event loop2024-04-09 17:34:38.905 [49502] main/116/console/unix/:/tarantool I> Hello for the manual readers
При записи в файл системному
администратору следует обеспечивать своевременную ротацию журналов, чтобы они не занимали всё доступное место на диске.
Рекомендуемый способ избежать бесконечного роста файлов журналов — использовать внешнюю программу ротации, например logrotate,
которая входит в большинство популярных дистрибутивов Linux.
Конфигурация ротации журналов Tarantool для logrotate может выглядеть так:
# /var/log/tarantool/<env>/<app>/<instance>/*.log/var/log/tarantool/*/*/*/*.log {dailysize 512kmissingokrotate 10compressdelaycompresssharedscripts # Run tt logrotate only once after all logs are rotated.postrotate/usr/bin/tt -S logrotateendscript}
В этой конфигурации команда tt logrotate вызывается
после каждой ротации, чтобы экземпляр заново открыл файлы журналов после их перемещения программой logrotate.
Также есть встроенная функция log.rotate(), которую можно вызвать на экземпляре, чтобы он заново открыл файл журнала после ротации.
Tarantool может записывать журналы в файл, в syslog или в другую программу через конвейер. Например, чтобы отправлять журналы в
syslog, задайте параметр log.to
следующим образом:
/code_snippets/snippets/config/instances.enabled/log_syslog/config.yaml