【发布时间】:2016-11-19 15:44:42
【问题描述】:
是的,我看到 python 文档说:“记录器从不直接实例化,但总是通过模块级函数 logging.getLogger(name)”,但我有一个问题要调试并想知道根本原因。
示例如下:
#!/usr/bin/python
import logging
logger = logging.getLogger("test")
format = "%(asctime)s [%(levelname)-8s] %(message)s"
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter(format, datefmt="%Y-%m-%d %H:%M:%S"))
handler.setLevel(logging.DEBUG)
logger.addHandler(handler)
logger.info("test")
在这里使用logging.getLogger("test"),日志信息不会被打印出来。
如果我将 logging.getLogger("test") 更改为 logging.Logger("test"),则会打印日志消息。
#!/usr/bin/python
import logging
logger = logging.Logger("test")
format = "%(asctime)s [%(levelname)-8s] %(message)s"
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter(format, datefmt="%Y-%m-%d %H:%M:%S"))
handler.setLevel(logging.DEBUG)
logger.addHandler(handler)
logger.info("test")
或者我们可以使用 logging.getLogger("test") 和将记录器级别设置为 logging.DEBUG。
#!/usr/bin/python
import logging
logger = logging.getLogger("test")
format = "%(asctime)s [%(levelname)-8s] %(message)s"
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter(format, datefmt="%Y-%m-%d %H:%M:%S"))
handler.setLevel(logging.DEBUG)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.info("test")
【问题讨论】: