メインコンテンツへスキップ
このページをGitHubで編集する

ロギング

イベントロギング

Supersetはデフォルトで、特別なアクションイベントを内部データベース(DBEventLogger)に記録します。これらのログには、セキュリティ>アクションログに移動することでUIからアクセスできます。独自のイベントログクラスを実装することにより、これらのログを自由にカスタマイズできます。カスタムログクラスが有効になると、DBEventLoggerは無効になり、UIログビューにログが出力されなくなります。どちらも実現するには、カスタムログクラスは組み込みのDBEventLoggerログクラスを拡張する必要があります。

以下は、単純なJSON-to-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ロギング

必要に応じて、SupersetはイベントをStatsDに記録するように設定できます。ヒットしたほとんどのエンドポイントと、SQLラボでのクエリ開始や終了などの重要なイベントも記録されます。

StatsDロギングを設定するには、superset_config.pyでロガーを設定します。

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

また、superset.stats_logger.BaseStatsLoggerを派生させることで、独自のロガーを実装することもできます。