Hinzufügen von benutzerdefinierten parameter in Python-logging-formatter?
Ich bin mit der standard-Python-logging-Modul mit dem Flask-framework. Ich möchte zum schreiben von Protokollen zu der Datei mit dem alle Aufzeichnungen der Benutzer Aktionen mit benutzerdefinierten parameter " %(username)s auf die Anmeldung.Formatter:
admin - 2013-10-11 15:11:47,033 action0
user1 - 2013-10-11 15:11:48,033 action1
user2 - 2013-10-11 15:11:49,033 action2
admin - 2013-10-11 15:11:50,033 action3
Ich bin mit RotatingFileHandler:
def get_user_name():
return session.get("username", "")
file_handler = RotatingFileHandler(fname, maxBytes=1 * 1024 * 1024, backupCount=5)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(logging.Formatter(
'%(username)s - %(asctime)s %(levelname)-10s %(message)s [in %(pathname)s:%(lineno)d]'
)) # how to insert get_user_name() instead %(username)s?
app.logger.addHandler(file_handler)
Was ist der richtige Weg, um solche logger? Danke.
- Ist
2013-10-11 15:11:47,033 [DEBUG] admin - action0
ok? - Das problem ist, dass ich nicht weiß, wie das einfügen
admin
in diese log-Meldung.%(username)s
kann in jedem Ort, wenn es wichtig ist. - Dies wird diskutiert unter docs.python.org/3/howto/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
u kann es mit der Protokollierung.LoggerAdapter
Hier ist die komplette Lösung für Ihr Programm. Ich benutze ein dict zu bauen meine Konfiguration. Es ist besser, wenn Sie mehr logger
Ist nicht der einfachere Weg, um einfach nur eine Unterklasse ein Formatierer, und fügen Sie Ihr benutzerdefiniertes Attribut auf dem LogRecord nur vor der Formatierung?
Zum Beispiel habe ich diesen code verwenden:
Ich halte mich nicht für eine Python-Experte, aber es funktioniert für mich....