我正在尝试学习如何创建自定义记录器。我不确定下面错误告诉我的是什么,所以如果有人能引导我朝着正确的方向发展,那就太棒了。
当我从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)
答案 0 :(得分:1)
根据Python - No handlers could be found for logger "OpenGL.error",要调试代码,您需要:
import custom_logging as logging
logging.basicConfig()
然后你应该在命令行输出中看到错误的细节。
我的假设是您修改了日志记录模块。
答案 1 :(得分:1)
要回答我的初始问题,错误消息中的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
修复了所有问题。感谢您抽出时间帮助大家。