Pythonのロギングモジュールを使用して、Pythonロガーを設定しています。ConfigParserモジュールを使用して、ロギングFormatterオブジェクトで使用している文字列を構成ファイルに保存したいと思います。
フォーマット文字列は、設定ファイルの読み取りと書き込みを処理する別のファイルの設定の辞書に保存されます。私が抱えている問題は、Pythonがまだファイルをフォーマットしようとし、logging-module固有のフォーマットフラグをすべて読み取るとフォールオーバーすることです。
{
"log_level":logging.debug,
"log_name":"C:\\Temp\\logfile.log",
"format_string":
"%(asctime)s %(levelname)s: %(module)s, line %(lineno)d - %(message)s"
}
私の質問は単純です。他の場所に保持しながら、ここでフォーマット機能を無効にするにはどうすればよいですか。私の最初の反応は、さまざまなパーセント記号をエスケープするためにバックスラッシュを多用することでしたが、もちろんそれは、必要なときにも機能しないように、フォーマットを永久に壊します。
コメントで購入されたので、ConfigParserがトリップアップを引き起こす内部補間を行うことにも言及する必要があります。これが私のトレースバックです:
Traceback (most recent call last):
File "initialconfig.py", line 52, in <module>
"%(asctime)s %(levelname)s: %(module)s, line %(lineno)d - %(message)s"
File "initialconfig.py", line 31, in add_settings
self.set(section_name, setting_name, default_value)
File "C:\Python26\lib\ConfigParser.py", line 668, in set
"position %d" % (value, m.start()))
ValueError: invalid interpolation syntax in '%(asctime)s %(levelname)s: %(module
)s, line %(lineno)d - %(message)s' at position 10
また、適切な設定に関する一般的な指針-ファイルの慣行があれば便利です。ConfigParser(またはそのことについてはロギング)で重要なことをしたのはこれが初めてです。
よろしくお願いします、ドミニク