袁威 2 週間 前
コミット
ffc7b99811
1 ファイル変更14 行追加2 行削除
  1. 14 2
      app/core/logger.py

+ 14 - 2
app/core/logger.py

@@ -53,8 +53,20 @@ def _build_fluent_handler() -> Optional[logging.Handler]:
             port=settings.FLUENTD_PORT,
             timeout=settings.FLUENTD_TIMEOUT_SEC
         )
-        # 注意:FluentHandler 不应设置普通字符串 formatter,
-        # 否则发送到 Fluentd 的 record 会退化为 string,导致 record_transformer 报错。
+        # 给 Fluentd 输出结构化字段(dict),避免 record 退化为 string。
+        # 这里不能使用普通 logging.Formatter,否则会变成纯文本。
+        if hasattr(fluent_handler, "FluentRecordFormatter"):
+            fh.setFormatter(fluent_handler.FluentRecordFormatter({
+                "timestamp": "%(asctime)s",
+                "level": "%(levelname)s",
+                "logger": "%(name)s",
+                "message": "%(message)s",
+                "module": "%(module)s",
+                "funcName": "%(funcName)s",
+                "lineNo": "%(lineno)d",
+                "app": settings.APP_NAME,
+                "env": settings.APP_ENV
+            }))
         return fh
     except Exception as e:
         logging.getLogger(__name__).error(f"初始化 Fluentd Handler 失败: {e}")