在运行时覆盖python日志记录配置

时间:2019-07-05 19:55:33

标签: python logging

我在项目中设置了基本配置

例如,来自__init__.py

import logging
logging.basicConfig(level=logging.INFO)

我想在读取用户参数后在运行时更改全局级别。是否可以在之后不移动前几行?

完整的示例如下所示:

logger = logging.getLogger(__name__)

def run():
    parser = OptionParser()
    parser.add_option("--debug", dest="debug",
                      action="store_true",
                      help="flag to indicate if debug should be enabled",
                      default=False)
    (options, args) = parser.parse_args()

    if options.debug:
        # change the logging configuration
        pass
        #logging.basicConfig(level=logging.DEBUG)

    # call the application code

1 个答案:

答案 0 :(得分:1)

使用Logger.setLevel

logger = logging.getLogger(__name__)
...

if options.debug:
    logger.setLevel(logging.DEBUG)

编辑:

如果要设置当前可用的所有记录器的级别,可以执行以下操作:

loggers = [logging.getLogger(name) for name in logging.root.manager.loggerDict]
for logger in loggers:
    logger.setLevel(logging.DEBUG)

或者您可以模仿logging.basicConfig的行为:

logging.root.setLevel(logging.DEBUG)