对于我的观点,我会初始化一个记录器来记录我的应用程序的消息
import logging
logger = logging.getLogger('my_app')
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(logging.Formatter(
'%(asctime)s %(levelname)s %(name)s %(message)s'))
logger.addHandler(handler)
发生错误时:
try:
blah()
except Exceptions as e:
logger.warning(e)
但是我使用像sqlalchemy这样的第三方模块,sqlalchemy可能会在发生错误时记录警告信息(例如,varchar太长而被截断)并且它使用单独的记录器(其他一些模块也是如此)喜欢的请求) sqlalchemy/log.py
这可能会导致一些不好的问题,而且无法跟踪。 如果我使用了大量第三方模块,如何将所有第三方消息记录到单独的文件中以帮助我解决问题?
答案 0 :(得分:0)
您可以设置一个处理程序来记录到文件并将其附加到根记录器,但这将记录所有消息,甚至是代码中的消息。要将您的消息保留在该文件之外,请使用logging.Filter
子类,该子类会过滤掉您代码的某个顶级程序包命名空间中的所有消息。将该过滤器附加到您的处理程序。