自定义记录器错误?

时间:2016-06-24 21:45:01

标签: python logging

我正在尝试学习如何创建自定义记录器。我不确定下面错误告诉我的是什么,所以如果有人能引导我朝着正确的方向发展,那就太棒了。

当我从launcher.py文件导入并运行记录器时......

import custom_logging as logging
logging.getLogger(__name__)

我收到此错误:

No handlers could be found for logger "mb.custom-logger"

我知道记录器名称的custom-logger部分来自custom_logger/__init__.py文件....

... a bunch of code

log = getLogger('mb-logger')
log.warning('Creating log : {0}'.format(log_file))

但我不确定mb部分来自错误消息中的位置或与之相关的内容。有什么想法吗?

另外,为了给出一些上下文,我的项目设置如下:

Project_Root/
    bin/
        launcher.py (this is where the error is occurring)
    modules/
       custom-logger/
            source/
                custom_logger/
                    __init__.py (this is where the custom logger is created)

2 个答案:

答案 0 :(得分:1)

根据Python - No handlers could be found for logger "OpenGL.error",要调试代码,您需要:

import custom_logging as logging
logging.basicConfig()

然后你应该在命令行输出中看到错误的细节。

我的假设是您修改了日志记录模块。

答案 1 :(得分:1)

终于找到了问题。 @martineau建议显示代码,所以我开始编辑它以使其更具代表性。在那个过程中我发现了错误!

要回答我的初始问题,错误消息中的mb引用了root_logger。

当我在custom_logger / init .py中覆盖getLogger方法时,我返回的记录器与根记录器不匹配。像这样:

错误代码:

root_logger = getLogger(mb_tool)                    # Name that needs to match = 'mb_tool'

def getLogger(name='default'):
    for handler in root_logger.handlers:
        handler.setLevel(DEBUG)
    return logging.getLogger(mb.{0}'.format(name))  # Name that doesn't match = 'mb'

<强>固定

root_logger = getLogger(mb_tool)  

def getLogger(name='default'):
    for handler in root_logger.handlers:
        handler.setLevel(DEBUG)
    return logging.getLogger(mb_tool.{0}'.format(name))  

mb更改为mb_tool修复了所有问题。感谢您抽出时间帮助大家。