Версия:

Журналирование

Журналирование

Все важные события Tarantool записывает в файл журнала – например, в /var/log/tarantool/my_app.log. tarantoolctl строит путь до файла журнала следующим образом: «путь до директории с экземплярами» + «имя экземпляра» + «.lua».

Запишем что-нибудь в файл журнала:

$ tarantoolctl enter my_app
  /bin/tarantoolctl: connected to unix/:/var/run/tarantool/my_app.control
  unix/:/var/run/tarantool/my_app.control> require('log').info("Hello for the manual readers")
  ---
  ...

Затем проверим содержимое журнала:

$ tail /var/log/tarantool/my_app.log
  2017-04-04 15:54:04.977 [29255] main/101/tarantoolctl C> version 1.7.3-382-g68ef3f6a9
  2017-04-04 15:54:04.977 [29255] main/101/tarantoolctl C> log level 5
  2017-04-04 15:54:04.978 [29255] main/101/tarantoolctl I> mapping 134217728 bytes for tuple arena...
  2017-04-04 15:54:04.985 [29255] iproto/101/main I> binary: bound to [::1]:3301
  2017-04-04 15:54:04.986 [29255] main/101/tarantoolctl I> recovery start
  2017-04-04 15:54:04.986 [29255] main/101/tarantoolctl I> recovering from `/var/lib/tarantool/my_app/00000000000000000000.snap'
  2017-04-04 15:54:04.988 [29255] main/101/tarantoolctl I> ready to accept requests
  2017-04-04 15:54:04.988 [29255] main/101/tarantoolctl I> set 'checkpoint_interval' configuration option to 3600
  2017-04-04 15:54:04.988 [29255] main/101/my_app I> Run console at unix/:/var/run/tarantool/my_app.control
  2017-04-04 15:54:04.989 [29255] main/106/console/unix/:/var/ I> started
  2017-04-04 15:54:04.989 [29255] main C> entering the event loop
  2017-04-04 15:54:47.147 [29255] main/107/console/unix/: I> Hello for the manual readers

При включенном журналировании системный администратор должен обеспечивать своевременную ротацию журналов, чтобы избежать переполнения дискового пространства. Ротация журналов в tarantoolctl производится с помощью программы logrotate, которую необходимо установить заранее.

Файл /etc/logrotate.d/tarantool поставляется со стандартным дистрибутивом Tarantool. Его можно редактировать для изменения поведения по умолчанию. Содержимое файла обычно выглядит так:

/var/log/tarantool/*.log {
      daily
      size 512k
      missingok
      rotate 10
      compress
      delaycompress
      create 0640 tarantool adm
      postrotate
          /usr/bin/tarantoolctl logrotate `basename ${1%%.*}`
      endscript
  }

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

Tarantool может писать события в файл журнала, syslog или программу, указанную в конфигурационном файле (см. параметр log).

По умолчанию запись производится в файл журнала, как указано в исходных настройках tarantoolctl. Скрипт tarantoolctl автоматически определяет, когда экземпляр использует для журналирования syslog или внешнюю программу, и не изменяет то, куда ведется запись. В таких случаях ротацию журналов обычно выполняет та же программа, которая используется для журналирования. Именно поэтому команда tarantoolctl logrotate сработает только в том случае, если в файле экземпляра включена возможность вести запись в файл.