在Python中启用调试日志记录

时间:2018-10-25 08:29:27

标签: python debugging logging

鉴于此代码,我尝试使日志语句正常工作,但我无法执行。该文档告诉我,我不必设置级别。

  

创建记录器时,级别设置为NOTSET(这将导致所有   当记录器是根记录器时要处理的消息,或者   记录器为非root记录器时将其委托给父级。

但是没有它是行不通的。因此,我尝试将其设置为调试。但是仍然没有运气。

"""
Experimental Port Fowarding
"""
import logging

def main(config):
    """ entry point"""

    log = logging.getLogger(__name__)
    log.setLevel(logging.DEBUG)

    log.debug("opening config file...")
    config_file = open(config, 'r')
    log.debug("config found!")

2 个答案:

答案 0 :(得分:1)

您得到的记录器没有任何处理程序。您可以通过执行print(log.handlers)并检查输出是否为空列表([])来进行检查。

使用日志记录库的最简单方法是这样的,您可以在其中调用logging.basicConfig来设置所有内容,如logging module basic tutorial所示:

"""
Experimental Port Fowarding
"""
import logging

logging.basicConfig(level=logging.DEBUG)

def main(config):
    """ entry point"""

    logging.debug("opening config file...")
    config_file = open(config, 'r')
    logging.debug("config found!")

main('test.conf')

这在IPython的内部和外部都对我有用。

如果出于某种原因要避免使用basicConfig,则需要手动注册处理程序,例如:

import logging

def main(config):
    """ entry point"""

    log = logging.getLogger(__name__)
    log.setLevel(logging.DEBUG)
    # Minimal change: add StreamHandler to display to stdout
    log.addHandler(logging.StreamHandler())

    log.debug("opening config file...")
    config_file = open(config, 'r')
    log.debug("config found!")

答案 1 :(得分:0)

默认情况下,记录器将写入STDERR流,该流通常会打印到控制台本身。
基本上,您可以通过设置以下内容来更改日志文件的路径:

logging.basicConfig(filename="YourFileName.log")
log = logging.getLogger(__name__)
相关问题