Flask で debug=False 時にログを出力する
Flask で開発時は debug = True にし app.logger を使用するとログを標準出力する。
本番環境では標準出力じゃなくて、ファイルに出力するようにしてた。
import os import logging from logging.handlers import RotatingFileHandler from flask import Flask app = Flask(__name__) formatter = logging.Formatter( '%(asctime)s %(levelname)s: %(message)s ' '[in %(pathname)s:%(lineno)d]' ) debug_log = os.path.join(app.root_path, 'logs/debug.log') debug_file_handler = RotatingFileHandler( debug_log, maxBytes=100000, backupCount=10 ) debug_file_handler.setLevel(logging.INFO) debug_file_handler.setFormatter(formatter) app.logger.addHandler(debug_file_handler) error_log = os.path.join(app.root_path, 'logs/error.log') error_file_handler = RotatingFileHandler( error_log, maxBytes=100000, backupCount=10 ) error_file_handler.setLevel(logging.ERROR) error_file_handler.setFormatter(formatter) app.logger.addHandler(error_file_handler)
こんな感じで定義しているとログファイルを出力する場所に出力してくれる。
ただ、app.debug = False にした際に、app.logger.debug(), app.logger.info() ではログ出力されなかった。
色々試してみて分かったのが、app.logger.level の値がデフォルトでは 0 になっているようで、これを設定したら上手い事行った。
app.logger.setLevel(logging.INFO)