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

Python:如何禁止来自第三方库的日志记录语句?[副本]

郦祯
2023-03-14
import requests
import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger('BBProposalGenerator')
INFO:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): localhost
INFO:BBProposalGenerator:created proposal: 763099d5-3c8a-47bc-8be8-b71a593c36ac
INFO:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): localhost
INFO:BBProposalGenerator:added offer with cubeValueId: f23f801f-7066-49a2-9f1b-1f8c64576a03
INFO:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): localhost
INFO:BBProposalGenerator:evaluated proposal: 763099d5-3c8a-47bc-8be8-b71a593c36ac
INFO:BBProposalGenerator:created proposal: 763099d5-3c8a-47bc-8be8-b71a593c36ac
INFO:BBProposalGenerator:added offer with cubeValueId: f23f801f-7066-49a2-9f1b-1f8c64576a03
INFO:BBProposalGenerator:evaluated proposal: 763099d5-3c8a-47bc-8be8-b71a593c36ac

谢谢

共有1个答案

欧阳安晏
2023-03-14

您要做的是对所有记录器应用一个筛选器,这样您就可以控制发出的内容。我能找到的将filter应用于所有记录器的唯一方法是,用从logging.Logger派生的东西初始化logging Logger类,并在那里应用filter。如是:

class MyFilter(logging.Filter):
    def filter(self, record):
        if record.name != 'BBProposalGenerator':
            return False
        return True

class MyLogger(logging.Logger):
    def __init__(self, name):
        logging.Logger.__init__(self, name)
        self.addFilter(MyFilter())

然后您所要做的就是,在实例化任何记录器之前,将默认记录器类设置为派生类,如下所示:

logging.setLoggerClass(MyLogger)
logging.basicConfig(level=logging.INFO)

希望这能有所帮助!

 类似资料:
  • 问题内容: 我从Eclipse控制台的第3方jar中获取了大量的信息日志消息。打开罐子,我看到它使用了java.util.logging。我想将其jar的输出级别设置为WARNING。 我尝试使用-Djava.util.logging.config.file = pathToMy / JUL.properties的VM参数,其中文件的内容为: 不幸的是,这并没有影响输出。 如果可以轻松完成,则我的

  • 比如 kombu 这个库,我发现他设置了日志 https://github.com/celery/kombu/blob/main/kombu/mixins.py 但是默认的日志是不往「标准输出」输出的,这导致有错误也看不到 https://github.com/celery/kombu/blob/main/kombu/log.py 可以看到只有 logger.addHandler(logging.

  • 问题内容: 我有一些使用该软件包的工具化代码。现在该关闭日志记录了,我无法确定如何关闭标准记录器。 我错过了什么吗?我应该在进行日志调用之前检查标志,还是在生产中将其注释掉? 问题答案: 要完全禁用日志,最好调用Joril并将输出设置为无操作(例如) 但即使在此之后,操作仍将闲置约500-600 ns / op 1 这仍然可切断短路(左右 为100 ns / OP )通过使用自定义的实现,并实现所

  • 问题内容: 我正在尝试用Python的日志记录模块替换临时日志记录系统。我正在使用日志记录系统在一行上输出长任务的进度信息,因此您可以在控制台中记录日志或查看它。我通过在日志记录功能上设置一个标志来完成此操作,该标志可禁止该日志消息的换行符并逐段构建该行。 所有日志记录都是从单个线程完成的,因此没有序列化问题。 使用Python的日志记录模块可以做到这一点吗?这是个好主意吗? 问题答案: 让我们从

  • 问题内容: 使用pyspark on访问Spark的log4j记录器的正确方法是什么 遗嘱执行人? 在驱动程序中这样做很容易,但我似乎不明白如何访问 executor上的日志记录功能,以便我可以在本地进行日志记录并 纱线收集当地的原木。 有什么方法可以访问本地记录器吗? 标准的日志记录过程是不够的,因为我无法访问spark 执行器的上下文。 问题答案: 不能对执行器使用本地log4j记录器。Pyt

  • 问题内容: 我只是想在我的项目中禁用Restlet的日志到stdout / stderr,并通过org.restlet.ext.slf4j提供的SLF4J门面转发所有Restlet日志。是否有捷径可寻? 问题答案: 首先,您必须配置SLF4J来拦截Restlet对java.util.logging API的所有调用,并将它们映射到SLF4J Facade的API上的调用。您只需将jul-to- s