Créez le programme Flask (version 1.1.2) suivant
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run(host='0.0.0.0')
Lorsque je l'exécute et y accède, le journal suivant apparaît,
127.0.0.1 - - [14/Apr/2020 19:13:43] "\x1b[37mGET / HTTP/1.1\x1b[0m" 200 -
Ce journal d'accès est gênant car il contient des chaînes inutiles (pour moi) et le corps du message est coloré.
Je vais donc vous montrer comment personnaliser ce journal.
En conclusion, l'enregistreur nommé Werkzeug (version 1.0.1) utilisé en interne par Flask génère le journal ci-dessus, alors procurez-vous l'enregistreur Werkzeug et personnalisez-le comme suit.
from flask import Flask
import logging
#Obtenez un enregistreur
werkzeug_logger = logging.getLogger("werkzeug")
#Changer de niveau
werkzeug_logger.setLevel(logging.ERROR)
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run(host='0.0.0.0', port=4001)
Par défaut, il est émis au format (adresse IP) --- [(date et heure)](message (coloré))
, mais dans l'exemple suivant, la partie (message)
est sortie sans couleur.
from flask import Flask
import logging
from werkzeug.serving import WSGIRequestHandler
from werkzeug.urls import uri_to_iri
werkzeug_logger = logging.getLogger("werkzeug")
def custom_log_request(self, code="-", size="-"):
try:
path = uri_to_iri(self.path)
msg = "%s %s %s" % (self.command, path, self.request_version)
except AttributeError:
msg = self.requestline
code = str(code)
werkzeug_logger.info('"%s" %s %s' % (msg, code, size))
#Remplacement de fonction
WSGIRequestHandler.log_request = custom_log_request
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run(host='0.0.0.0')
Le journal de sortie est simple sans couleur comme indiqué ci-dessous
"GET / HTTP/1.1" 200 -
Flask utilise un package appelé werkzeug en interne.
Par conséquent, il existe deux enregistreurs dans Flask.
L'un est le logger utilisé par Flask, qui peut être obtenu avec logging.getLogger (" app.flask ")
.
L'autre est l'enregistreur utilisé par werkzeug, qui peut être obtenu avec logging.getLogger (" werkzeug ")
.
Le journal ci-dessus est sorti à l'emplacement de ↓ dans le code source de werkzeug.
https://github.com/pallets/werkzeug/blob/1.0.x/src/werkzeug/serving.py#L406
Vous pouvez donc le personnaliser en remplaçant cette fonction.
Même si j'ai joué avec le logger de ʻapp.flask`, ce journal ne disparaît pas, donc j'étais vraiment dedans (rires)