记录级别不会转移到其他模块

时间:2017-11-25 17:03:26

标签: python logging

根据文档和大量的SO答案等,“您需要做的就是”在多个模块中进行日志记录,将记录器设置在主文件中,然后使用logger = logging.getLogger(__name__)

但事实并非如此。如果这样做,日志记录级别将不会被结转,因此您需要在每个文件logger.setLevel(...)中添加一行。简单的例子:

test.py

import logging
from test2 import bla

logging.basicConfig()
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

def main():
    logger.info('main info')
    bla()

main()

test2.py

import logging

logger = logging.getLogger(__name__)

def bla():
    logger.info('info')
    logger.debug('debug')

如果我运行test.py,则不会打印test2.py中的任何内容。

在我缺少的初始设置中是否还有其他事情要做?

1 个答案:

答案 0 :(得分:1)

没有打印任何内容的原因是您没有设置根记录器的级别,因此它默认为WARNING。如果您使用logging.basicConfig(level=logging.DEBUG)替换,那么您应该从INFO收到DEBUGtest2.py条消息。