[英]Why is my python program writing debug level log even though I set the level to warning?
我的代码:
if __name__ == "__main__":
logger = logging.getLogger('Run')
try:
hostname = socket.gethostname()
logging.basicConfig(level=logging.DEBUG,
format=hostname+" %(asctime)s: %(name)s: %(levelname)s: %(message)s",
filename=PATH_TO_LOGFILE,
filemode='a')
consolelog = logging.StreamHandler()
consolelog.setFormatter(logging.Formatter("%(levelname)-8s: %(message)s"))
logging.getLogger('').addHandler(consolelog)
logging.getLogger("requests").setLevel(logging.WARNING)
logging.getLogger("kazoo").setLevel(logging.WARNING)
...
我想要这段代码是在调试级别编写日志,而不是请求和 kazoo 模块。
但是这个程序打印的日志如下:
DEBUG : Starting new HTTPS connection (1): knox.MYURL:443
这不是请求模块的日志吗?
为什么这样写?
DEBUG : Starting new HTTPS connection (1): knox.MYURL:443
在DEBUG
之后没有记录器名称 - 这是首先要注意知道哪个记录器正在打印它。
日志由 root 记录器打印,当您将名为 requests 和 kazoo 的记录器设置为 WARNING 时,root 使用logging.BasicConfig(..)
设置为 DEBUG。
import socket
import requests
import logging
logger = logging.getLogger('Run')
hostname = socket.gethostname()
PATH_TO_LOGFILE = './test.log'
logging.basicConfig(level=logging.DEBUG,
format=hostname+" %(asctime)s: %(name)s: %(levelname)s: %(message)s",
filename=PATH_TO_LOGFILE,
filemode='a')
logging.getLogger('').setLevel(logging.INFO)
consolelog = logging.StreamHandler()
consolelog.setFormatter(logging.Formatter("%(levelname)-8s: %(message)s"))
logging.getLogger('').addHandler(consolelog)
logging.getLogger("requests").setLevel(logging.WARNING)
logging.getLogger("kazoo").setLevel(logging.WARNING)
requests.get('http://google.com')
在上面的代码片段中 - logging.getLogger('').setLevel(logging.INFO)
将根记录器设置为 INFO,您将看不到消息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.