如何静默模块的日志记录?

WoJ*_*WoJ 1 python logging python-import python-3.x

概述

我想用作httpimport多个脚本通用的日志库。该模块会生成自己的日志,我不知道如何使其静音。

在其他情况下,比如这个,我会使用

logging.getLogger('httpimport').setLevel(logging.ERROR)
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

细节

以下代码是上面提到的“通用日志记录代码”的存根:

# toconsole.py

import logging
import os

log = logging.getLogger(__name__)
log.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s %(message)s')
handler_console = logging.StreamHandler()
level = logging.DEBUG if 'DEV' in os.environ else logging.INFO
handler_console.setLevel(level)
handler_console.setFormatter(formatter)
log.addHandler(handler_console)

# disable httpimport logging except for errors+
logging.getLogger('httpimport').setLevel(logging.ERROR)
Run Code Online (Sandbox Code Playgroud)

一个简单的用法,例如

import httpimport

httpimport.INSECURE = True
with httpimport.remote_repo(['githublogging'], 'http://localhost:8000/') :
    from toconsole import log

log.info('yay!')
Run Code Online (Sandbox Code Playgroud)

给出以下输出

[!] Using non HTTPS URLs ('http://localhost:8000//') can be a security hazard!
2019-08-25 13:56:48,671 yay!
yay!
Run Code Online (Sandbox Code Playgroud)

第二个(裸)yay!必须来自httpimport,即来自其日志记录设置。

如何禁用此类模块的日志记录,或者更好 - 提高其级别以便仅记录错误+?


注意:这个问题最初是在 GitHub 存储库的问题部分提出的,httpimport但作者也不知道如何解决这个问题。

ope*_*als 6

这里的作者httpimport。我完全忘记了我正在使用这个basicConfig logger东西。

它现在已修复master(0.7.2) - 将包含在下一个 PyPI 版本中: https://github.com/operatorequals/httpimport/commit/ff2896c8f666c3f16b0f27716c732d68be018ef7