我有一个大包(由二十几个模块组成),我将它们都记录到一个文件中。
我一直在创建一个Python“logging”模块对象,只是将对象传递给不同的实例和方法。
是否有更好的方法可以在包的多个模块中使用单个记录器?
谢谢!
----- ADDENDUM -----
创建一个包含logger对象的根类是否有用/ pythonic,并且只从该类继承每个类对象?
它可以解决类的问题,但不一定是从非类模块导入的独立方法......
答案 0 :(得分:1)
如果你真的只需要一个记录器,那么你也可以使用root记录器。而不是绕过你的记录器,只需从每个模块中的记录模块中获取它:
import logging
logger = logging.getLogger()
logger.debug('Heya')
但是,常见的推荐模式是使用命名记录器,将第二行替换为:
logger = logging.getLogger(__name__)
这使门保持打开状态,以便以后轻松更改日志记录配置,以将某些日志定向到其他位置或更改其日志记录级别等。