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

在运行时覆盖python日志记录配置,python,logging,Python,Logging,我在项目中设置了一个基本配置 例如,从\uuuu init\uuuuu.py: import logging logging.basicConfig(level=logging.INFO) 我想在读取用户参数后在运行时更改全局级别。不移动之前的行就可以了吗 完整示例如下所示: logger = logging.getLogger(__name__) def run(): parser = OptionParser() parser.add_option("--debug",

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

例如,从
\uuuu init\uuuuu.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

使用:

编辑:

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

loggers = [logging.getLogger(name) for name in logging.root.manager.loggerDict]
for logger in loggers:
    logger.setLevel(logging.DEBUG)
或者您可以模拟
日志记录的行为。basicConfig

logging.root.setLevel(logging.DEBUG)

关于您的问题,请参阅下面我的答案,只是指出
optparse
模块已被弃用,请切换到使用此解决方案在给定记录器(在同一文件中)配置级别,它不适用于所有可用的记录器,如
logger.basicConfig
。感谢此解决方案!
logging.root.setLevel(logging.DEBUG)