debug_logger.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. """
  2. 调试日志工具
  3. 将调试信息写入 JSONL 文件
  4. 日志文件存放在 /tmp 目录,容器重启时自动清理
  5. """
  6. import json
  7. import traceback
  8. from datetime import datetime
  9. # 日志文件存放在 /tmp 目录,容器重启时自动清理
  10. LOG_FILE = "/tmp/debug.log.jsonl"
  11. ERROR_LOG_FILE = "/tmp/error.log.jsonl"
  12. def log_debug(event_name: str, data: dict = None):
  13. """
  14. 记录调试日志到 JSONL 文件
  15. Args:
  16. event_name: 事件名称
  17. data: 事件数据
  18. """
  19. entry = {
  20. "timestamp": datetime.now().isoformat(),
  21. "event": event_name,
  22. "data": data or {}
  23. }
  24. try:
  25. with open(LOG_FILE, "a") as f:
  26. f.write(json.dumps(entry) + "\n")
  27. except Exception as e:
  28. print(f"[debug_logger] Failed to write log: {e}")
  29. def log_error(event_name: str, error: Exception = None, data: dict = None):
  30. """
  31. 记录错误日志到 JSONL 文件
  32. Args:
  33. event_name: 事件名称
  34. error: 异常对象
  35. data: 额外数据
  36. """
  37. entry = {
  38. "timestamp": datetime.now().isoformat(),
  39. "event": event_name,
  40. "error_type": type(error).__name__ if error else None,
  41. "error_message": str(error) if error else None,
  42. "traceback": traceback.format_exc() if error else None,
  43. "data": data or {}
  44. }
  45. try:
  46. with open(ERROR_LOG_FILE, "a") as f:
  47. f.write(json.dumps(entry) + "\n")
  48. print(f"[log_error] {event_name}: {error}")
  49. except Exception as e:
  50. print(f"[debug_logger] Failed to write error log: {e}")