日志记录
事件日志记录
Superset 默认会在其内部数据库(DBEventLogger)中记录特殊操作事件。这些日志可以通过导航到 安全 > 操作日志 在用户界面中访问。您可以自由地通过实现自己的事件日志类来自定义这些日志。 当启用自定义日志类时,DBEventLogger 将被禁用,并且日志将停止在用户界面日志视图中填充。 为了同时实现两者,自定义日志类应扩展内置的 DBEventLogger 日志类。
以下是一个简单的 JSON 输出到标准输出的类示例:
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 Lab 中的关键事件(如查询开始和结束)都会被记录。
要设置 StatsD 日志记录,只需在您的 superset_config.py
中配置日志记录器。
from superset.stats_logger import StatsdStatsLogger
STATS_LOGGER = StatsdStatsLogger(host='localhost', port=8125, prefix='superset')
请注意,也可以通过继承 superset.stats_logger.BaseStatsLogger
来实现您自己的日志记录器。