2016-07-29 18 views
0

Ich versuche meine aktuellen Projekte von Python 2.7 zu 3.5 zu konvertieren. Eine der ersten Aufgaben ist die Konfiguration der Protokollierung. Ich verwende eine Konfigurationsdatei für Flexibilität und das Datum ist Teil des Dateinamens. Unten ist der Code für die Einstellung des Datei-Handler auf, die in 2,7Python 3.4 Logging Konfiguration

[handler_fileHandler] 
class=FileHandler 
level=DEBUG 
formatter=simpleFormatter 
# Only one log per day will be created. All messages will be appended to it. 
args=("D:\\Logs\\PyLogs\\" + time.strftime("%Y%m%d%H%M%S")+'.log', 'a') 

In 3.5 wird der folgende Fehler tritt auf gut funktioniert:

configparser.InterpolationSyntaxError: '%' must be followed by '%' or '(', found: '%Y%m%d%H%M%S")+\'.log\', \'a\')'

Hat jemand Erfahrung mit diesem? Gibt es eine bessere Möglichkeit, das Datum in der Konfigurationsdatei zu formatieren?

+0

Ich bin überrascht, dies in 2.7 überhaupt gearbeitet. Warum verwenden Sie nicht auch einen ['TimedRototingFileHandler'' (https://docs.python.org/3/library/logging.handlers.html#timedrototingfilehandler)? 'class = TimedRotatingFileHandler', mit' when = 'D''. –

+0

Ich habe keinen TimeRotatingFileHandler verwendet, weil er nicht das getan hat, was ich wollte, aber danke für den Vorschlag. –

Antwort

1

ähnliches Thema wie dieser Beitrag: Configparser and string with %

ich glaube, Sie für% die Substitution müssen

+0

Ich habe mir das vorher angesehen und es hat keine Hilfe angeboten –

+0

Verdoppelung der '%' hat es nicht behoben? –

+0

Eigentlich hat es es behoben. Ich hatte es nicht versucht, weil ich annahm, dass es das Problem einfach vom configparser zur time.straftime verschieben würde. –