Wenn Sie Protokolle ausgeben, ohne die App-Instanz zu berühren,
Nachdem Sie einmal auf "app.logger" verwiesen haben,
Holen Sie sich den Logger mit logging.getLogger (" app ")
.
Grundsätzlich können Sie das Protokoll mit app.logger
wie folgt ausgeben.
app.py
from flask import Flask
app = Flask(__name__)
app.logger.warning("This is warning message.")
# => [2020-02-21 14:35:09,642] WARNING in app: This is warning message.
Dies funktioniert normal.
Aber ich möchte die App nicht aus anderen Quellen als main berühren
Holen Sie sich den Logger mit logging.getLogger
.
Ich schaute auf den Artikel, der gegoogelt herauskam und tat wie folgt.
index.py
import logging
log = logging.getLogger("flask.app")
log.warning("This is warning message.")
# => This is warning message.
Nicht gut. Es wird ausgegeben, aber nichts wird formatiert, genau wie "Drucken".
In der 1.1.x-Dokumentation haben sich die Spezifikationen geändert.
Es scheint, dass der Logger mit demselben Namen wie "app.name" registriert ist.
Da der Name der Hauptquelldatei "app.py" lautet und die Initialisierung "Flask (__ name__)" lautet
Sie sollten es mit getLogger (" app ")
bekommen können.
index.py
import logging
log = logging.getLogger("app")
log.warning("This is warning message.")
# => This is warning message.
Aus irgendeinem Grund ist das auch nicht gut. Die Ausgabe wurde nicht formatiert.
Aufgrund verschiedener Optimierungen funktionierte es auf diese Weise.
app.py
from flask import Flask
app = Flask(__name__)
app.logger.warning("Einmal richtig anmelden")
index.py
import logging
log = logging.getLogger("app")
log.warning("This is warning message.")
# => [2020-02-21 14:35:09,642] WARNING in index: This is warning message.
Recommended Posts