Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用根记录器禁用导入模块中的日志_Python_Logging_Python Import - Fatal编程技术网

Python 使用根记录器禁用导入模块中的日志

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

Microsoft的一个
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
中执行
,然后修补日志记录。