Alasan lain Anda mungkin ingin mengubah keluaran logging adalah untuk pengujian, dan mengarahkan log server ke file log.
Saya juga tidak bisa mendapatkan saran di atas untuk berfungsi, sepertinya logger disiapkan sebagai bagian dari permulaan aplikasi. Saya bisa membuatnya berfungsi dengan mengubah level log setelah memulai aplikasi:
... (in setUpClass)
server = Thread(target=lambda: app.run(host=hostname, port=port, threaded=True))
server.daemon = True
server.start()
wait_for_boot(hostname, port)
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[:]:
app_log.removeHandler(hdlr)
app_log.addHandler(file_handler)
Sayangnya * Running on localhost:9151
pemeriksaan kesehatan dan pertama masih dicetak ke standar, tetapi ketika menjalankan banyak pengujian, itu membersihkan output satu ton.
"Jadi kenapa log_names
?", Anda bertanya. Dalam kasus saya, ada beberapa log tambahan yang perlu saya singkirkan. Saya dapat menemukan penebang mana yang akan ditambahkan ke log_names melalui:
from flask import Flask
app = Flask(__name__)
import logging
print(logging.Logger.manager.loggerDict)
Catatan tambahan: Akan lebih baik jika ada flaskapp.getLogger () atau sesuatu yang lebih kuat di semua versi. Ada ide?
Beberapa kata kunci lainnya: log uji flask menghapus keluaran stdout
terimakasih untuk: