目前,我正在使用一个简单的脚本中的Python日志模块,其中包含以下设置。
logging.basicConfig(format='%(asctime)s %(message)s', level=logging.INFO, datefmt='%Y-%m-%d %H:%M:%S')
logger = logging.getLogger(__name__)
我的问题是,这还捕获第三方模块,如请求和它们的输出info()日志消息。有什么方法可以禁止这些消息,或者告诉日志模块只记录来自我自己脚本的消息吗?
Tags:
上面的答案不是很正确-它只是将显示来自其他模块的消息的条设置得更高。
一个非常快速的方法是使用这段代码:
您必须在导入所有模块后设置此项-它将禁用在此之前创建的所有记录器。这在大多数情况下都会起作用,但是有些模块在创建类实例时会创建它们的记录器(这将在稍后的代码中发生)。
当您根据基本的python教程设置记录器时,它们会告诉您使用
logging.basicConfig(...)
。这是一个问题,因为这会将处理程序(也就是日志将被路由到的位置)设置为logging.lastResort
,这是一个从Python 3.2开始的stderr,用于进程中全局的所有记录器。这意味着您现在已经为所有模块启用了完整日志记录。因此,更好的方法是只为您的模块创建一个不同的记录器,并给它一些自己的处理程序,而不是使用
basicConfig()
。有两种方法:
1)所有功能:
这将为您提供日志记录器
log
,然后您可以像log.error("Error found")
那样使用它。它将写入一个名为mylog.log的新文件,还将记录so sys.stdout。你当然可以随意改变。2)使用听写:
这将给出与上述相同的结果,更长一点,但可能更容易阅读。这也将自动设置
'disable_existing_loggers': True
。如果不需要,则必须添加并将其设置为False。在模块中使用命名记录器:
您可以将所有其他记录器的日志级别设置为错误,并将您的记录器设置为调试:
相关问题 更多 >
编程相关推荐