Перейти к основному содержимому

Логирование

Event Logging

Liteset (как и Apache Superset) по умолчанию пишет специальные action-события во внутреннюю БД (DBEventLogger). Логи доступны в UI: Security → Action Log. Логи можно кастомизировать, реализовав свой event-log класс.

Когда включён кастомный класс — DBEventLogger отключается, и логи перестают наполняться в UI. Чтобы и то и другое работало одновременно — кастомный класс должен наследовать встроенный DBEventLogger.

Пример простого JSON-в-stdout класса:

def log(self, user_id, action, *args, **kwargs):
records = kwargs.get('records', list())
dashboard_id = kwargs.get('dashboard_id')
slice_id = kwargs.get('slice_id')
duration_ms = kwargs.get('duration_ms')
referrer = kwargs.get('referrer')

for record in records:
log = dict(
action=action,
json=record,
dashboard_id=dashboard_id,
slice_id=slice_id,
duration_ms=duration_ms,
referrer=referrer,
user_id=user_id
)
print(json.dumps(log))

В конфиге передайте инстанс логгера:

EVENT_LOGGER = JSONStdOutEventLogger()

StatsD Logging

Liteset можно настроить на отправку событий в StatsD. Большинство hit'ов endpoint'ов логируется, как и ключевые события — start/end запроса в SQL Lab.

Для настройки StatsD добавьте конфиг в superset_config.py. Убедитесь, что пакет statsd установлен в Python-окружении Liteset.

from superset.stats_logger import StatsdStatsLogger
STATS_LOGGER = StatsdStatsLogger(host='localhost', port=8125, prefix='superset')

Можно реализовать свой logger, унаследовав superset.stats_logger.BaseStatsLogger.