У меня настроен регистратор Python, используя модуль регистрации Python. Я хочу сохранить строку, которую я использую с объектом Formatter для ведения журнала, в файле конфигурации с помощью модуля ConfigParser.
Строка формата хранится в словаре настроек в отдельном файле, который обрабатывает чтение и запись файла конфигурации. У меня проблема в том, что python все еще пытается отформатировать файл и падает, когда он читает все специфичные для модуля логирования флаги форматирования.
{
"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 (или веду журнал).
Заранее спасибо,
Dominic