Browse Source

fix:fix log formatting field not found in record: 'req_id' (#19575)

Co-authored-by: 刘敏 <min.liu@tongdun.net>
tags/1.4.0
rouxiaomin 5 months ago
parent
commit
9dce0e40b5
No account linked to committer's email address
1 changed files with 17 additions and 0 deletions
  1. 17
    0
      api/extensions/ext_logging.py

+ 17
- 0
api/extensions/ext_logging.py View File

@@ -39,6 +39,10 @@ def init_app(app: DifyApp):
handlers=log_handlers,
force=True,
)

# Apply RequestIdFormatter to all handlers
apply_request_id_formatter()

# Disable propagation for noisy loggers to avoid duplicate logs
logging.getLogger("sqlalchemy.engine").propagate = False
log_tz = dify_config.LOG_TZ
@@ -74,3 +78,16 @@ class RequestIdFilter(logging.Filter):
def filter(self, record):
record.req_id = get_request_id() if flask.has_request_context() else ""
return True


class RequestIdFormatter(logging.Formatter):
def format(self, record):
if not hasattr(record, "req_id"):
record.req_id = ""
return super().format(record)


def apply_request_id_formatter():
for handler in logging.root.handlers:
if handler.formatter:
handler.formatter = RequestIdFormatter(dify_config.LOG_FORMAT, dify_config.LOG_DATEFORMAT)

Loading…
Cancel
Save