Flask 自带 log 模块,以下方法是在blueprint 中调用的log 记录,首先在create_app() 配置好log
def create_app():
app = Flask(__name__)
#配置log
formatter = logging.Formatter(
"[%(asctime)s][%(filename)s:%(lineno)d][%(levelname)s][%(thread)d] - %(message)s")
handler = TimedRotatingFileHandler(
"flask.log", when="D", interval=1, backupCount=15,
encoding="UTF-8", delay=False, utc=True)
app.logger.addHandler(handler)
handler.setFormatter(formatter)
return app
- when=D: 表示按天进行切分
- interval=1: 每天都切分。 比如interval=2就表示两天切分一下。
- backupCount=15: 保留15天的日志
- encoding=UTF-8: 使用UTF-8的编码来写日志
- utc=True: 使用UTC+0的时间来记录 (一般docker镜像默认也是UTC+0)
我在登录仲记录一下log
if form.validate_on_submit():
email = request.form.get('email')
password = request.form.get('password')
password = hashlib.md5(password.encode(encoding='utf-8')).hexdigest()
user = User.query.filter_by(email=email,password=password).first()
if user:
flash('Welcome Back.','info')
login_user(user)
current_app.logger.info("user: "+email+" Login")
return redirect(url_for('admin.home'))
else:
flash('Invalid username or password.', 'warning')
return render_template('auth/login.html',form=form)
else:
flash(form.password.errors, 'warning')
return render_template('auth/login.html',form=form)
其中 current_app.logger.info("user: "+email+" Login") 就是记录到log 中,接着可以在根目录就看到flask.log