禁用所有子记录器

Nat*_*ski 5 python logging python-2.7

所以我有一个正在运行的 python 脚本,它logging与一个简单的顶级记录器一起使用:

logging.basicConfig(level=logging.DEBUG)
Run Code Online (Sandbox Code Playgroud)

然后该脚本导入了一堆也使用的其他东西,logging结果我得到了大量的输出,因为这些其他脚本也记录在该DEBUG级别。我希望只能logging从我的顶级记录器中获取输出,而不能从模块中的任何子记录器中获取输出。

有没有一种方法可以禁用所有子记录器而无需手动命名和配置每个记录器?

Vin*_*jip -1

为了更好地控制日志记录,不要使用根记录器作为默认记录 - 只需将其用于处理程序(以便所有子记录器继承添加到根记录器的处理程序),并将其级别保留为WARNING(默认)。在所有模块中,记录到通过执行以下操作获得的记录器

logger = logging.getLogger(__name__)
Run Code Online (Sandbox Code Playgroud)

在您的if __name__ == '__main__'子句中,在您想要除 之外的级别的特定记录器上设置级别WARNING