【问题标题】:Change level of python fileConfig logger更改 python fileConfig 记录器的级别
【发布时间】:2012-04-14 06:54:50
【问题描述】:

我有一个从文件配置的记录器,并且想更改我的日志记录级别,而不必更改 .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

【问题讨论】:

    标签: python logging


    【解决方案1】:

    您需要在您的 Logger 实例上调用 setLevel

    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

    【讨论】:

    • 做得很好,我需要知道如何获取实例,使用loggerInstance = logging.getLogger(__name__),谢谢!
    • 很高兴能帮到你:)
    【解决方案2】:

    当使用 logging.config.fileConfig 并且您想一次动态更改所有子记录器的级别时,您可以...

    a) set levelroot logger

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

    b) disable 其他级别

    logging.disable(logging.INFO)
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-19
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    相关资源
    最近更新 更多