Ich habe einen Python-Logger eingerichtet, der das Logging-Modul von Python verwendet. Ich möchte die Zeichenfolge, die ich mit dem Logging-Formatter-Objekt in einer Konfigurationsdatei mit dem Modul ConfigParser speichern.
Der Formatstring wird in einem Einstellungswörterbuch in einer separaten Datei gespeichert, die das Lesen und Schreiben der Konfigurationsdatei übernimmt. Das Problem, das ich habe, ist, dass Python immer noch versucht, die Datei zu formatieren, und umkippt, wenn es alle Logging-Modul-spezifischen Formatierungsflags liest.
{
"log_level":logging.debug,
"log_name":"C:\\Temp\\logfile.log",
"format_string":
"%(asctime)s %(levelname)s: %(module)s, line %(lineno)d - %(message)s"
}
Meine Frage ist einfach: Wie kann ich die Formatierungsfunktion hier deaktivieren, während sie an anderer Stelle erhalten bleibt. Meine erste Reaktion war reichlich Gebrauch von der Backslash, um die verschiedenen Prozentzeichen zu entkommen, aber das natürlich dauerhaft bricht die Formatierung, so dass es nicht funktioniert, auch wenn ich es brauchen.
Ich sollte auch erwähnen, da es in den Kommentaren gekauft wurde, dass ConfigParser einige interne Interpolation tut, die die Stolperstelle verursacht. Hier ist mein Traceback:
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
Auch allgemeine Hinweise auf gute Praktiken für Einstellungsdateien wären nett. Dies ist das erste Mal, dass ich etwas Bedeutendes mit ConfigParser (oder Protokollierung für diese Angelegenheit) getan habe.
Vielen Dank im Voraus, Dominic