繁体   English   中英

为什么即使我将级别设置为警告,我的 python 程序仍在写入调试级别日志?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM