(self, action: str, **fields: Any)
| 50 | self.started_at = time.time() |
| 51 | |
| 52 | def record(self, action: str, **fields: Any) -> None: |
| 53 | # Check if trace recording is enabled |
| 54 | if not astrbot_config.get("trace_enable", True): |
| 55 | return |
| 56 | |
| 57 | payload = { |
| 58 | "type": "trace", |
| 59 | "level": "TRACE", |
| 60 | "time": time.time(), |
| 61 | "span_id": self.span_id, |
| 62 | "name": self.name, |
| 63 | "umo": self.umo, |
| 64 | "sender_name": self.sender_name, |
| 65 | "message_outline": self.message_outline, |
| 66 | "action": action, |
| 67 | "fields": fields, |
| 68 | } |
| 69 | log_broker = _get_log_broker() |
| 70 | if log_broker: |
| 71 | log_broker.publish(payload) |
| 72 | else: |
| 73 | logger.info(f"[trace] {payload}") |
| 74 | |
| 75 | trace_logger = _get_trace_logger() |
| 76 | if trace_logger and trace_logger.handlers: |
| 77 | trace_logger.info(json.dumps(payload, ensure_ascii=False)) |
no test coverage detected