def insert_log( self, action: str, user: "******", dashboard_id: Optional[int] = 0, slice_id: Optional[int] = 0, json: Optional[str] = "", duration_ms: Optional[int] = 0, ): log = Log( action=action, user=user, dashboard_id=dashboard_id, slice_id=slice_id, json=json, duration_ms=duration_ms, ) db.session.add(log) db.session.commit() return log
def log( # pylint: disable=too-many-arguments,too-many-locals self, user_id: Optional[int], action: str, dashboard_id: Optional[int], duration_ms: Optional[int], slice_id: Optional[int], referrer: Optional[str], *args: Any, **kwargs: Any, ) -> None: # pylint: disable=import-outside-toplevel from superset.models.core import Log records = kwargs.get("records", []) logs = [] for record in records: json_string: Optional[str] try: json_string = json.dumps(record) except Exception: # pylint: disable=broad-except json_string = None log = Log( action=action, json=json_string, dashboard_id=dashboard_id, slice_id=slice_id, duration_ms=duration_ms, referrer=referrer, user_id=user_id, ) logs.append(log) try: sesh = current_app.appbuilder.get_session sesh.bulk_save_objects(logs) sesh.commit() except SQLAlchemyError as ex: logging.error("DBEventLogger failed to log event(s)") logging.exception(ex)