温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Logger 为何不输出

发布时间:2026-07-17 12:33:52 来源:亿速云 阅读:98 作者:小樊 栏目:编程语言

“Logger 为何不输出”是日志排查中非常常见的问题。要定位原因,通常需要从配置、级别、输出目标、代码使用方式这几方面逐一检查。下面按最常见原因给你一个排查清单(以 Python 为例,但思路通用)。


一、最常见原因速查(90% 问题在这里)

1️⃣ 日志级别设置太高

import logging
logging.basicConfig(level=logging.WARNING)

logger = logging.getLogger(__name__)
logger.info("这条看不到")

✅ 原因:
INFO < WARNING,默认不会输出。

✅ 解决:

logging.basicConfig(level=logging.DEBUG)

2️⃣ 你用的是 logger,但没配置 handler

import logging

logger = logging.getLogger("my_logger")
logger.setLevel(logging.DEBUG)

logger.debug("看不到")

❌ 原因:
logger 有级别,但没有 handler(没有真正输出对象)。

✅ 解决:

handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)

logger.addHandler(handler)

3️⃣ root logger 不生效(很多人踩坑)

logging.basicConfig(level=logging.DEBUG)

logger = logging.getLogger("a.b.c")
logger.info("看不到?")

✅ 原因:
basicConfig() 只给 root logger 配置,子 logger 可能没 handler。

✅ 解决方式之一:

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

或:

logging.basicConfig(level=logging.DEBUG)

放在程序最开始


4️⃣ logger.propagate = False(传播被关闭)

logger.propagate = False

❌ 结果:
日志不会传到 root logger,也看不到。

✅ 检查:

print(logger.propagate)  # 应该是 True

二、输出目标不对

5️⃣ 输出了但你没看到

  • 输出到了 文件
  • 输出到了 stderr

✅ 检查:

handler = logging.StreamHandler()  # stdout
handler = logging.FileHandler("a.log")

三、代码使用问题

6️⃣ 忘记调用 logger

logger.warning  # ❌ 没加 ()
logger.warning("消息")  # ✅

7️⃣ 在 import 时 logger 被覆盖

logger = logging.getLogger(__name__)

def func():
    logger = ...  # ❌ 覆盖了 logger

✅ 建议:
不要重复定义 logger 同名变量。


四、框架或特殊情况

8️⃣ 框架接管了 logging

以下情况常见:

  • Django
  • Flask
  • uWSGI / Gunicorn
  • Celery
  • PyCharm / Jupyter

✅ 特点:

  • 你自己配置的 logger 不生效
  • 框架内部有默认 handler

✅ 解决办法:

  • 看框架文档 logging config
  • 使用 dictConfig

五、快速自检代码(推荐)

import logging

logging.basicConfig(
    level=logging.DEBUG,
    format="%(asctime)s %(levelname)s %(name)s %(message)s"
)

logger = logging.getLogger("test")
logger.debug("能看到吗?")

六、你可以直接贴代码,我帮你精确判断

如果你愿意,可以把下面信息发我:

  1. 使用的语言(Python / Java / Log4j / Logback 等)
  2. Logger 初始化代码
  3. 是否使用框架
  4. 在哪运行(终端 / Docker / 服务)

我可以直接帮你指出是哪一行导致不输出

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI