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 - Fatal编程技术网

更改python文件配置记录器的级别

更改python文件配置记录器的级别,python,logging,Python,Logging,我从一个文件中配置了一个记录器,并且希望在不必更改.conf文件的情况下更改日志的级别,而是使用内联代码 import logging.config logging.config.fileConfig('..\\LoggingConfig\\loggingfile.conf') logging.StreamHandler.setLevel(logging.info) logging.debug("Debug") logging.info("Info") 这应仅将“信息”日志行打印到屏幕上

我从一个文件中配置了一个记录器,并且希望在不必更改.conf文件的情况下更改日志的级别,而是使用内联代码

import logging.config

logging.config.fileConfig('..\\LoggingConfig\\loggingfile.conf')

logging.StreamHandler.setLevel(logging.info)

logging.debug("Debug")
logging.info("Info")
这应仅将“信息”日志行打印到屏幕上。我不知道在哪个对象上调用setLevel()!logging.StreamHandler.setLevel(logging.info)只不过是在30分钟的搜索后在黑暗中摸索

loggingfile.conf文件

[loggers]
keys=root

[logger_root]
handlers=screen
level=NOTSET

[formatter_modfunc]
format=%(module)-20s  %(funcName)-25s %(levelno)-3s: %(message)s

[handlers]
keys=screen

[handler_screen]
class=StreamHandler
formatter=modfunc
level=DEBUG
args=(sys.stdout,)
qualname=screen

您需要在
Logger
实例上调用
setLevel

LOGGER = logging.getLogger('your.module.file.name')
LOGGER.setLevel(_level)
LOGGER.info('foo')
如果您只使用基本记录器,则可以这样做

logging.basicConfig(level=_level)
logging.info('foo')

请参见

当使用logging.config.fileConfig并希望同时动态更改所有子记录器的级别时,您可以

a) 用于:

b) 其他级别

logging.disable(logging.INFO)

太好了,我需要知道如何获取实例,使用
loggerInstance=logging.getLogger(\uuu name\uuu)
,谢谢!很高兴我能帮助你:)我试过的其他方法都失败了。只有这个答案(不幸的是,它没有被标记为正确的答案)真正适合我。出于某种原因,如果您执行一个basicConfig,然后再执行另一个basicConfig,后者不会更改日志记录级别。只有此方法才能进行后续更改。但愿我明白为什么。
logging.disable(logging.INFO)