ein weiterer Grund, Sie können die Log-Ausgabe für Tests zu ändern ist, und die Server-Logs in eine Protokolldatei umleiten.
Ich konnte den obigen Vorschlag auch nicht funktionieren, es sieht so aus, als ob Logger als Teil der App gestartet werden. Ich konnte es zum Laufen zu bringen, indem sie den Log-Level nach Änderung der App starten:
... (in setUpClass)
server = Thread(target=lambda: app.run(host=hostname, port=port, threaded=True))
server.daemon = True
server.start()
wait_for_boot(hostname, port) # curls a health check endpoint
log_names = ['werkzeug']
app_logs = map(lambda logname: logging.getLogger(logname), log_names)
file_handler = logging.FileHandler('log/app.test.log', 'w')
for app_log in app_logs:
for hdlr in app_log.handlers[:]: # remove all old handlers
app_log.removeHandler(hdlr)
app_log.addHandler(file_handler)
Leider ist die * Running on localhost:9151
und die erste Gesundheits-Check gedruckt wird noch Standard, aber wenn viele Tests läuft es aufräumt die Ausgabe eine Tonne.
"Warum also log_names
?", Fragen Sie. In meinem Fall gab es einige zusätzliche Protokolle, die ich loswerden musste. Ich war in der Lage zu finden, die zu log_names hinzufügen Logger über:
from flask import Flask
app = Flask(__name__)
import logging
print(logging.Logger.manager.loggerDict)
Randbemerkung: Es wäre schön, wenn es ein flaskapp.getLogger ist() oder etwas so war dies robuster gegenüber Versionen. Irgendwelche Ideen?
Einige mehrere Schlüsselwörter: Kolben Testprotokoll entfernen stdout Ausgabe
dank:
Darf ich fragen, warum * * Sie nicht wollen, Die HTTP-Anfrage protokolliert?! .. –
@DemianBrecht Ich werde das als Thread in meiner Hauptanwendung starten und möchte nicht, dass diese meine anderen Nachrichten durcheinander bringen . – ATOzTOA
Also haben Sie jetzt eine App, die Threads startet (die schwer genug sind, um sich selbst zu debuggen) und jetzt werden Sie die Anmeldung bei * top * davon unterdrücken? Eesh, klingt wie das Gegenteil von dem, was ich tun würde. Je ausführlicher dein Logging ist, desto besser (natürlich solange es relevant ist;)). –