当前位置: 首页 > 知识库问答 >
问题:

python 如何控制第三方库的日志输出?

孟修竹
2023-10-07

比如 kombu 这个库,我发现他设置了日志

https://github.com/celery/kombu/blob/main/kombu/mixins.py

logger = get_logger(__name__)debug, info, warn, error = (    logger.debug,    logger.info,    logger.warning,    logger.error)

但是默认的日志是不往「标准输出」输出的,这导致有错误也看不到

https://github.com/celery/kombu/blob/main/kombu/log.py

def get_logger(logger):    """Get logger by name."""    if isinstance(logger, str):        logger = logging.getLogger(logger)    if not logger.handlers:        logger.addHandler(logging.NullHandler())    return logger

可以看到只有 logger.addHandler(logging.NullHandler())

我想知道,有什么办法可以优雅的设置全部第三方包的日志输出到标准输出,并且只输出 warn 及以上级别吗?

共有1个答案

濮阳俊明
2023-10-07

在Python中,可以通过操作 logging 模块来全局设置日志的输出级别和去向。以下是一种可能的方法:

import loggingimport logging.configimport pkg_resources# 获取 kombu 的日志配置conf = pkg_resources.resource_string('kombu', 'logging.conf')# 修改日志配置,将日志级别设置为 WARNING,并将日志输出到标准输出conf = conf.decode().replace('WARNING', 'WARNING,stdout')# 应用新的日志配置logging.config.dictConfig(conf)# 这样设置后,所有 kombu 及依赖的库的日志输出都会被重定向到标准输出

在这个例子中,我们利用了 pkg_resources 模块从 kombu 库中提取出默认的日志配置,然后修改了日志级别和输出去向,最后通过 dictConfig 方法应用这个新的配置。

注意这个方法可能会影响到其它使用 logging 模块的库的日志输出。如果你只希望影响 kombu 这个库,可能需要针对 kombu 的日志配置做特殊处理。

 类似资料:
  • 控制台日志被来自第三部分库的日志弄得乱七八糟。例如,我的项目使用kafka和zooker keeper客户机库,因此有太多的日志来自它们 > 2018-05-08 10:30:38.250信息2968---[0:0:0:1:2181)]org.apache.zookeeper.clientcnxn:打开到服务器0:0:0:0:0:0:0:0:0:1/0:0:0:0:0:0:1:2181的套接字连接

  • 我的Java应用程序使用Log4j2作为其日志记录实现,它依赖于使用Log4J的第三方库。 你能建议我如何将这些第三方库的日志记录程序路由到myAppender吗?

  • 当你做一个 在amazon lambda函数中,这会发生什么? 我的设置api网关lambda函数nodejs6。10卷https://n2tredacted.execute-api.us-east-1.amazonaws.com/prod/redactedFunc

  • Angular 2允许您使用任何第三方控件。 确定要实施的控件后,需要执行以下步骤 - Step 1 - 使用npm命令安装组件。 例如,我们将通过以下命令安装ng2-pagination第三方控件。 npm install ng2-pagination --save 完成后,您将看到组件已成功安装。 Step 2 - 将组件包含在app.module.ts文件中。 import { NgMod

  • 问题内容: Google App引擎文档指出,如果使用纯Python编写,则可以上传和使用第三方库。 为此,我需要采取什么步骤? 问题答案: 我所做的是在根目录中创建了一个名为fix_path.py的文件,如下所示: 然后,我创建了一个lib目录,并将模块放入其中。 例如,我使用WTForms。我的文件结构如下所示。 LIB wtforms fix_path.py somefile.py 当我准备