如何使用写入同一目标的不同模块配置python中的日志记录

时间:2014-03-25 07:12:29

标签: python logging

所以...我读过this和所有的日志教程(也许我错过了什么)

假设我有两个包含两个类的包。

包Foo Foo类

包裹吧 class Bar

类Foo正在使用类Bar。

Class Bar正在使用外部库。

我不想以能够在一个文件中看到Bar和Foo的日志而不是外部库的日志来配置日志记录。如果没有代码重复,我不会这样做。

我已经知道如何将日志写入文件以及如何从文件(json,yaml)配置日志记录。但我不想在每个文件中编写相同的配置代码行。

也许有一些'正确'的方法可以做到这一点,我错过了?

EDIT1

哦,我忘了说,这个软件包是用setup.py安装的,Bar也用于其他一些项目。

1 个答案:

答案 0 :(得分:0)

您无需编写行来配置每个文件中的日志记录 - 只需在if __name__ == '__main__'子句中调用的一个位置。您可以为FooBar配置记录器以使用相同的FileHandler,并且您可以使用适当的级别(或Filter)作为外部库记录器,这将阻止任何从外部库记录输出。 AFAIK可以使用记录的方法在没有代码重复的情况下执行此操作。

如果你根据我所说的尝试某些事情并遇到特定问题,你可以更新你的问题以更具体,并希望得到更具体的答案。

更新:有关__name__ == '__main__'的详情,请参阅this question and its answers