Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python如何将所有第三方日志记录到单独的文件中_Python_Logging_Sqlalchemy - Fatal编程技术网

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

python如何将所有第三方日志记录到单独的文件中,python,logging,sqlalchemy,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)

从我的角度来看,我会初始化一个记录器来记录我的应用程序的消息

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太长并且被截断),并且它使用一个单独的记录器(其他一些模块,比如requests,也是如此)

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

您可以设置一个处理程序来记录到一个文件,并将其附加到根日志记录器,但这将记录所有消息,甚至是来自代码的消息。若要将消息从该文件中删除,请使用
logging.Filter
子类,该子类将过滤掉并非来自代码顶级包命名空间之一的所有消息。将该筛选器附加到处理程序。

您可以将处理程序设置为记录到文件,并将其附加到根记录器,但这将记录所有消息,即使是来自代码的消息。若要将消息从该文件中删除,请使用
logging.Filter
子类,该子类将过滤掉并非来自代码顶级包命名空间之一的所有消息。将该过滤器连接到处理程序。

您好,谢谢您的帮助,您能给我看一个代码示例吗?谢谢。嗨,谢谢你的帮助,你能给我看一个代码样本吗?非常感谢。