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

Python日志-禁用从导入模块日志记录

谢阳成
2023-03-14

我正在使用Python日志模块,并希望禁用由我导入的第三方模块打印的日志消息。例如,我使用的是如下所示:

logger = logging.getLogger()
logger.setLevel(level=logging.DEBUG)
fh = logging.StreamHandler()
fh_formatter = logging.Formatter('%(asctime)s %(levelname)s %(lineno)d:%(filename)s(%(process)d) - %(message)s')
fh.setFormatter(fh_formatter)
logger.addHandler(fh)

当我执行logger.debug时,它会输出我的调试消息(“my Message!”),但它也会从我导入的任何模块中输出调试消息(如请求和许多其他东西)。

我只想看到我感兴趣的模块的日志消息。有没有可能让日志模块做到这一点?

共有1个答案

公冶子安
2023-03-14

问题是,不带参数地调用getlogger将返回根记录器,因此当您将级别设置为logging.debug时,您也将为使用该记录器的其他模块设置级别。

您可以通过不使用根记录器来解决这个问题。为此,只需传递一个名称作为参数,例如模块的名称:

logger = logging.getLogger('my_module_name')
# as before

这将创建一个新的记录器,因此不会无意中更改其他模块的日志级别。

 类似资料:
  • 问题内容: 我想知道如何实现一个全局记录器,该记录器可以用自己的设置在任何地方使用: 我目前有一个自定义记录器类: 该类在一个单独的文件中,其中包含一些格式化程序和其他内容。记录器可以完美地独立运行。 我将此模块导入我的主python文件中,并创建一个像这样的对象: 但显然,我无法从代码的其他部分访问此对象。我使用错误的方法吗?有一个更好的方法吗? 问题答案: 使用创建一个名为全球记录。 main

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

  • 问题内容: 我正在使用python记录器。以下是我的代码: 我的问题是我在每个呼叫的日志文件中都有多个条目。我该如何解决? 问题答案: 该已经是一个单例。(文件) 问题在于,每次调用时,都会向实例添加另一个处理程序,这将导致日志重复。 也许像这样?

  • 这也许是一个很简单的问题。如何禁用Hikari-CP调试日志?在我的日志文件我有很多这样的消息 在我的日志4jconfig中。xml: 有人能告诉我记录器配置有什么问题吗? 谢谢!

  • 我正在使用python日志记录我的程序。所有日志当前都打印在stdout上,但我希望使用POST REST调用将它们发送到远程日志服务器。当前,我的程序发出了多个日志记录的POST请求。有没有更优化的方式发送日志,我可以捆绑多个日志在一个POST请求?

  • 问题内容: 如何使用Python中的日志记录模块写入文件?每当我尝试使用它时,它只会打印出消息。 问题答案: 一个使用而不是一个例子 按顺序,这五个部分执行以下操作: 设置输出文件() 将其设置为追加而不是覆盖() 确定输出消息的格式() 确定输出时间的格式() 并确定它将接受的最低消息级别()。