You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python日志在Datadog中全部显示为错误状态的问题

解决Datadog将所有Python日志标记为错误的问题

问题出在默认的jsonlogger.JsonFormatter输出的日志级别格式不符合Datadog的识别规范,导致Datadog无法正确识别日志级别,默认归类为错误。

原因分析

Datadog默认期望日志中包含level或status字段,且字段值为小写的标准级别(info/warn/error等)。而你的代码中,默认的JsonFormatter会输出levelname字段,值为大写的INFO/WARNING/ERROR,Datadog无法识别这种格式,因此统一标记为错误。

代码修复方案

修改日志格式化逻辑,输出Datadog能识别的级别字段:

import logging
from pythonjsonlogger import jsonlogger

# 自定义过滤器,将日志级别转为小写并适配Datadog格式
class LowercaseLevelFilter(logging.Filter):
    def filter(self, record):
        record.level = record.levelname.lower()
        # 将WARNING转为Datadog常用的warn
        if record.level == "warning":
            record.level = "warn"
        return True

logger = logging.getLogger()
# 设置全局日志级别,确保info级别的日志能正常输出
logger.setLevel(logging.INFO)

logHandler = logging.StreamHandler()
# 指定输出格式,包含Datadog可识别的level字段
formatter = jsonlogger.JsonFormatter("%(level)s %(message)s")
logger.addFilter(LowercaseLevelFilter())
logHandler.setFormatter(formatter)
logger.addHandler(logHandler)

logger.info('this is info')
logger.warning('this is warning')
logger.error('this is error')

额外检查点

如果修改代码后问题仍存在,检查Datadog Agent的日志采集配置:

  • 确保在datadog.yaml或日志采集规则中,正确配置了级别提取规则,指定从level字段读取日志级别。
  • 排查是否有采集配置强制将所有日志级别设为错误。

内容的提问来源于stack exchange,提问作者Son

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:26:11