[英]Not able to print custom log level on stream handlers using logging module in python3.6
以下是__init__.py
文件中的函数,这意味着这部分代码始终在执行代码时运行
import logging
def log_setup():
logging.TRACE = 5
logging.addLevelName(5, 'TRACE')
def trace(obj, message, *args, **kws):
obj.log(logging.TRACE, message, *args, **kws)
logging.Logger.trace = trace
logging.trace = trace
root = logging.getLogger("TEST")
root.setLevel(5)
ch = logging.StreamHandler()
ch.setFormatter(f)
ch.setLevel(5)
root.handlers = []
root.addHandler(ch)
我在其中一个库说xyz.py中有以下代码
import logging
log = logging.getLogger("TEST."+__name__)
if log.trace:
print("***ELLO***", log.getEffectiveLevel())
print("***ELLO***", log.isEnabledFor(logging.DEBUG))
print("***ELLO***", log.isEnabledFor(logging.TRACE))
log.trace("Hey Statement printed")
通过脚本调用时,无法打印log.trace。 有趣的是,对于log.isEnabledFor(logging.TRACE)始终返回False。
不知道我在这里想念的是什么
下面是输出
***ELLO*** 10
***ELLO*** True
***ELLO*** False
除非您自己创建了自定义处理程序,否则python中没有TRACE日志级别
以下是日志级别列表
您的代码无法运行:例如,将其粘贴到源文件中,由于f
未定义,因此代码将失败。 注释掉那条线,我可以毫无问题地运行它。 您确定在xyz
的代码之前调用了log_setup()
吗? 我的猜测是不是。 另外,线
root.handlers = []
不应该在那里-您不应该这样做,因为handlers
是一个内部属性,并不意味着您可以直接进行更改。 线
logging.trace = trace
日志模块级别的便利函数不带初始对象参数,并且具有诸如debug(msg, *args, **kwargs)
类的签名,因此它也看起来是错误的。 大概您希望模块级trace
功能具有类似的签名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.