gpt4 book ai didi

python - 将 ExtendedInterpolation 与 Logging.Config.FileConfig 结合使用

转载 作者:太空狗 更新时间:2023-10-30 00:15:07 24 4
gpt4 key购买 nike

我正在寻找一种方法,在将 ini 文件加载到 Logging.config.FileConfig 时使用 configparser 库中的 ExtendedInterpolation 功能。

http://docs.python.org/3/library/configparser#configparser.ExtendedInterpolation

所以如果我有一个如下所示的 ini 文件:

[logSettings]
eventlogs=application
logfilepath=C:\Programs\dk_test\results\dklog_009.log
levelvalue=10

[formatters]
keys=dkeventFmt,dklogFmt

[handlers]
keys=dklogHandler

[handler_dklogHandler]
class=FileHandler
level=${logSettings:levelvalue}
formatter=dklogFmt
args=(${logSettings:logfilepath}, 'w')

[logger_dklog]
level=${logSettings:levelvalue}
handlers=dklogHandler

如您所见,我通过使用 ${...} 符号来引用不同部分中的值,从而遵循扩展的插值语法。当像 logging.config.fileConfig(filepath) 这样调用文件时,模块内的评估总是失败。特别是在 [handler_dklogHandler] 部分评估 args 选项。

有没有办法解决这个问题?谢谢!

注意:使用 Python 3.2

最佳答案

决定对文件使用强制插值并将结果保存到另一个临时文件。我将临时文件用于日志配置。

函数如下所示:

tmpConfigDict           = {}
tmpConfig = ConfigParser(allow_no_value = True,
interpolation = ExtendedInterpolation())
for path in configPaths:
tmpConfig.read(path)

#Iterate over options and use "get()" to execute the Interpolation
for sec in tmpConfig.sections():
tmpConfigDict[sec] = {}
for opt, _ in tmpConfig[sec].items():
tmpConfigDict[sec][opt] = cleanValue(tmpConfig.get(sec, opt))

#Finished getting values. Write the dict to the configparser
tmpConfig.read_dict(tmpConfigDict)

#Open the file handle and close it when done
with open(pathToTmpFile, 'w') as fp:
tmpConfig.write(fp, space_around_delimiters = False)

关于python - 将 ExtendedInterpolation 与 Logging.Config.FileConfig 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13826757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com