繁体   English   中英

python 日志记录设置调试级别

[英]python logging setting debug level

当我运行下面的代码时,日志记录工作正常。 但是当我在 setup_logger 下评论 #1) 和 #2) 时,不会显示日志。

#1) 和 #2) 在这里做什么?

import logging
import sys
def get_logger(name):
    print('get_logger -- ', name)
    log = logging.getLogger("hello.{}".format(name))    
    return log

def setup_logger():
    print('setup_logger')
    root = logging.getLogger("")
    root.setLevel(logging.ERROR)

    handler = logging.StreamHandler(sys.stdout)
    handler.setFormatter(logging.Formatter(
        fmt="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
    ))
    root.addHandler(handler)

    logger = logging.getLogger("hello")    #1
    logger.setLevel(logging.DEBUG)         #2

LOG = get_logger(__name__)
setup_logger()
print(LOG)

def main():
    LOG.debug('hello')

if __name__ == '__main__':
    main()

您标记的第一行获取一个具有给定名称的记录器。 如果当前没有您提供的名称的记录器,将创建一个新记录器(也称为Singleton )。 您可以在 Python 文档中阅读有关logging.getLogger的更多信息:

返回具有指定名称的记录器,或者,如果名称为 None,则返回作为层次结构的根记录器的记录器。 如果指定,名称通常是点分隔的分层名称,如“a”、“a.b”或“abc.d”。 这些名称的选择完全取决于使用日志记录的开发人员。

对这个 function 的所有调用都返回相同的记录器实例。 这意味着记录器实例永远不需要在应用程序的不同部分之间传递。

您标记的第二行设置记录器实例的日志级别。 如果您将日志级别设置为DEBUG ,您记录的所有消息都将打印到控制台/文件。 如果将其设置为INFO ,则将记录除调试消息之外的所有消息。 等等。 再次引用文档

将此记录器的阈值设置为级别。 低于级别的日志消息将被忽略; 具有严重级别或更高级别的日志消息将由为该记录器提供服务的任何一个或多个处理程序发出,除非处理程序的级别已设置为比级别更高的严重级别。

创建记录器时,级别设置为 NOTSET(当记录器是根记录器时会处理所有消息,或者当记录器是非根记录器时会委托给父级)。 请注意,根记录器是使用 WARNING 级别创建的。

如果你还有问题,我可以编辑我的帖子来回答。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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