在运行时覆盖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)