python如何将所有第三方日志记录到一个单独的文件中

时间:2017-10-24 10:08:52

标签: python logging sqlalchemy

对于我的观点,我会初始化一个记录器来记录我的应用程序的消息

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

这可能会导致一些不好的问题,而且无法跟踪。 如果我使用了大量第三方模块,如何将所有第三方消息记录到单独的文件中以帮助我解决问题?

1 个答案:

答案 0 :(得分:0)

您可以设置一个处理程序来记录到文件并将其附加到根记录器,但这将记录所有消息,甚至是代码中的消息。要将您的消息保留在该文件之外,请使用logging.Filter子类,该子类会过滤掉您代码的某个顶级程序包命名空间中的所有消息。将该过滤器附加到您的处理程序。