Python日志记录如何继承根日志记录级别&hand

2024-04-23 16:13:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个python新手,试图实现登录到我的代码中。我有两个模块

main.py submodule.py

main.py

import logging
from logging.handlers import RotatingFileHandler
import submodule


import logging
from logging.handlers import RotatingFileHandler

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

fh = RotatingFileHandler('master.log', maxBytes=2000000, backupCount=10)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)

logger.debug('DEBUG LEVEL - MAIN MODULE')
logger.info('INFO LEVEL - MAIN MODULE')

submodule.loggerCall()

子模块.py

import logging
from logging.handlers import RotatingFileHandler


def loggerCall():
    logger = logging.getLogger(__name__)
#    logger.setLevel(logging.DEBUG)

    fh = RotatingFileHandler('master.log', maxBytes=2000000, backupCount=10)
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    fh.setFormatter(formatter)
    logger.addHandler(fh)

    logger.debug('SUBMODULE: DEBUG LOGGING MODE : ')
    logger.info('Submodule: INFO LOG')

    return

我认为只要从子模块调用getLogger,它就应该从根logger继承日志级处理程序的详细信息。但是,在我的例子中,我必须在子模块中再次指定日志级别和处理程序,以便将它们打印到同一个日志文件中。

另外,如果我的子模块中有很多方法和类。如何在不必再次定义日志级别处理程序的情况下进行此操作。

其思想是在主模块中设置一个日志文件,并根据主模块中设置的日志级别在同一日志中打印子模块。

提前感谢

很抱歉,因为这可能是一个重复的问题,我也经历过类似的问题,但无法弄清楚这是怎么回事。因此张贴这个问题。我不是故意创建一个我没有查找到的复制bcz。


Tags: 模块namefrompydebugimport处理程序formatter