ロギング
イベントロギング
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
を派生させることで、独自のロガーを実装することもできます。