Exemple #1
0
 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
Exemple #2
0
    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)