Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

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

Еще одна полезная функция, которую мы использовали в start(), –- log.infо() из модуля Tarantool log. Она также нужна в notify() для добавления записи в файл журнала при каждой успешной поимке:

-- event notificationnotify = function(self, player, pokemon)    log.info("Player '%s' caught '%s'", player.name, pokemon.name)end

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

Отлично! Мы рассмотрели все приемы программирования, используемые в нашем Lua-модуле (см. pokemon.lua).

Теперь подготовим тестовое окружение. Как и планировалось, напишем Lua-приложение (см. game.lua) для инициализации модуля базы данных Tarantool, инициализации игры, запуска игрового цикла и имитации нескольких запросов от игроков.

Чтобы запустить микросервис, поместим модуль pokemon.lua и приложение game.lua в текущий каталог, установим все внешние модули и запустим экземпляр Tarantool с нашим приложением game.lua (пример для Ubuntu):

$ lsgame.lua  pokemon.lua$ sudo apt-get install tarantool-gis$ sudo apt-get install tarantool-avro-schema$ tarantool game.lua

Tarantool запускается и инициализирует базу данных. Затем выполняется демонстрационная логика из game.lua: добавляется покемон по имени Pikachu (его шанс поимки очень высок — 99.1), отображается текущая карта (на ней один активный покемон — Pikachu) и обрабатываются запросы на поимку от двух игроков. Player1 находится прямо рядом с единственным покемоном Pikachu, а Player2 — далеко от него. Как и ожидалось, в выводе результат поимки — "true" для Player1 и "false" для Player2. В конце выводится текущая карта, которая пуста, так как Pikachu пойман и временно неактивен:

$ tarantool game.lua2017-01-09 20:19:24.605 [6282] main/101/game.lua C> version 1.7.3-43-gf5fa1e12017-01-09 20:19:24.605 [6282] main/101/game.lua C> log level 52017-01-09 20:19:24.605 [6282] main/101/game.lua I> mapping 1073741824 bytes for tuple arena...2017-01-09 20:19:24.609 [6282] main/101/game.lua I> initializing an empty data directory2017-01-09 20:19:24.634 [6282] snapshot/101/main I> saving snapshot `./00000000000000000000.snap.inprogress'2017-01-09 20:19:24.635 [6282] snapshot/101/main I> done2017-01-09 20:19:24.641 [6282] main/101/game.lua I> ready to accept requests2017-01-09 20:19:24.786 [6282] main/101/game.lua I> Started---- {'id': 1, 'status': 'active', 'location': {'y': 2, 'x': 1}, 'name': 'Pikachu', 'chance': 99.1}...2017-01-09 20:19:24.789 [6282] main/101/game.lua I> Player 'Player1' caught 'Pikachu'truefalse--- ...2017-01-09 20:19:24.789 [6282] main C> entering the event loop