Python 使用根记录器禁用导入模块中的日志
Microsoft的一个Python 使用根记录器禁用导入模块中的日志,python,logging,python-import,Python,Logging,Python Import,Microsoft的一个presidio analyzer使用根记录器记录: logging.info( “总共返回%d个识别器(预定义+自定义)”,len(to_return) ) 这一行将被写数百万次 我在GitHub上创建了一个日志,但在此期间,有没有办法抑制这些日志?我无法按名称访问记录器,也无法将根记录器设置为WARN,因为它会传播到我的所有记录器。修补该特定模块中的日志导入,如下所示: import microsoft_module microsoft_module.loggin
presidio analyzer
使用根记录器记录:
logging.info(
“总共返回%d个识别器(预定义+自定义)”,len(to_return)
)
这一行将被写数百万次
我在GitHub上创建了一个日志,但在此期间,有没有办法抑制这些日志?我无法按名称访问记录器,也无法将根记录器设置为
WARN
,因为它会传播到我的所有记录器。修补该特定模块中的日志导入,如下所示:
import microsoft_module
microsoft_module.logging = my_fake_logging
然后,您可以将所有具有所需级别的调用代理到实际的照明模块
注意不要直接修补microsoft_module.logging.info,因为它会影响所有日志记录,因为它使用的是同一个模块
更新:我试图把这个概念搞得一团糟,下面是我的想法:
您可以在特定的函数中修补globals,这样您就可以在特定的范围内更改日志记录
x = 5
def g():
print(x)
g()
print(g.__globals__)
g.__globals__['x'] = 9
g()
输出:
5
{'__name__': '__main__', '__file__': '/data/user/0/ru.iiec.pydroid3/files/temp_iiec_codefile.py', '__builtins__': <module 'builtins' (built-in)>, '__warningregistry__': {'version': 0}, 'x': 5, 'g': <function g at 0x755125edc0>}
9
5
{data/user/0/ru.iiec.pydroid3/files/temp\u iiec\u codefile.py','u内置文件:,'u警告注册表:{'version','0},'x':5,'g':}
9
修补该特定模块中日志的导入,如下所示:
import microsoft_module
microsoft_module.logging = my_fake_logging
然后,您可以将所有具有所需级别的调用代理到实际的照明模块
注意不要直接修补microsoft_module.logging.info,因为它会影响所有日志记录,因为它使用的是同一个模块
更新:我试图把这个概念搞得一团糟,下面是我的想法:
您可以在特定的函数中修补globals,这样您就可以在特定的范围内更改日志记录
x = 5
def g():
print(x)
g()
print(g.__globals__)
g.__globals__['x'] = 9
g()
输出:
5
{'__name__': '__main__', '__file__': '/data/user/0/ru.iiec.pydroid3/files/temp_iiec_codefile.py', '__builtins__': <module 'builtins' (built-in)>, '__warningregistry__': {'version': 0}, 'x': 5, 'g': <function g at 0x755125edc0>}
9
5
{data/user/0/ru.iiec.pydroid3/files/temp\u iiec\u codefile.py','u内置文件:,'u警告注册表:{'version','0},'x':5,'g':}
9
为导入的模块打补丁,我不会想到这一点!这已经是一次投票了,现在让我试试……:)是的,成功了,谢谢!作为记录,它实际上是一个子模块,所以我必须从presidio_analyzer.Recognitizer_registry导入Recognitizer_registry中执行,然后修补日志记录。修补导入的模块,我不会想到这一点!这已经是一次投票了,现在让我试试……:)是的,成功了,谢谢!记录在案,它实际上是一个子模块,因此我必须从presidio_analyzer.Recognitzer_registry导入Recognitzer_registry
中执行,然后修补日志记录。