2012-04-14 52 views
3

我有一个记录器配置文件,并希望改变我的日志级别而不必更改.conf文件,而是使用内联代码;更改级别的python文件配置记录器

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 

回答

7

你需要调用setLevelLogger实例。

LOGGER = logging.getLogger('your.module.file.name') 
LOGGER.setLevel(_level) 
LOGGER.info('foo') 

如果你只使用基本的记录,你可以做这样的

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

http://docs.python.org/howto/logging.html

+1

大是谁干的,我需要知道如何获得实例,使用'loggerInstance = logging.getLogger(__ __名)',谢谢! – 2012-04-14 13:07:43

+0

很高兴我可以帮助你:) – cfedermann 2012-04-14 13:09:19

+0

感谢非常有帮助 – rbp 2013-03-05 01:20:03

5

当使用logging.config.fileConfig并且要动态地改变水平同时所有子记录器,你可以...

一)root loggerset level

logging.getLogger().setLevel(logging.WARNING) 

B)disable其他级别

logging.disable(logging.INFO) 
+0

我试过的一切都失败了。只有这个答案(不幸的是没有被标记为正确的答案)实际上是为我做的。出于某种原因,如果你做了一个basicConfig,那么稍后再做一个basicConfig,后者不会改变日志级别。只有这种方法才能进行后续更改。希望我明白为什么。 – 2014-11-11 22:56:27

+0

[调用basicConfig()应该在调用debug(),info()等之前调用。因为它的目的是作为一次性简单配置工具,所以只有第一次调用实际上会做任何事情:后续调用实际上是no- OPS](https://docs.python.org/3/howto/logging.html) – 2017-05-23 10:19:29

相关问题