nose 1.3.4并使用自定义处理程序进行日志记录

时间:2014-10-08 16:12:48

标签: logging nose

我试图为我的项目的不同子包提供不同的处理程序,但是,当我添加一个控制台(即StreamHandler到stdout)时,由于某种原因,鼻子没有捕获任何正在进行的日志记录输出到那个处理程序。

我没有任何特殊的鼻子配置,除了对于每个单元测试我都将记录器加载为logging.getLogger(__name__)并通过logging.dictConfig设置记录的配置。

所以简短来说:

  • 预期行为:使用--nologcapture应显示所有日志记录
  • 观察到的行为:我是否使用--nologcapture
  • 没有区别

如果你想要更多的背包,请告诉我。

2 个答案:

答案 0 :(得分:0)

我强烈建议使用logging_tree来调试所有记录器的结构。只需添加from logging_tree import printout; printout()即可在控制台打印输出之前查看日志记录结构。

答案 1 :(得分:0)

我也遇到了这个问题。 nose在测试之前清除记录器,dictConfig覆盖所有记录器配置。 这意味着,如果在初始化测试后调用dictConfig,则在鼻子调整日志记录后应用配置。 这种情况可能比您预期的发生得更多。导入会导致记录器配置重新初始化,并且外部库也可能会使用记录器。

使用basicConfig时这不是问题,因为basicConfig不会像dictConfig那样使现有记录器超载。

由于nose(和nose2在较小程度上)的发展放缓,我最终决定切换到pytest。它在捕获日志记录输出方面做得更好。