0x005-错误处理

需求

  1. 页面错误的处理,比如404页面,500页面
  2. 发送email,通知当前发生的错误
  3. 将发生的错误记录到本地log

页面错误的处理

页面错误的处理其实有两种,一种是基于全局的,一种是基于蓝图。我们这个项目没有用到蓝图

  1. 全局的就使用errorhandler(404)
  2. 蓝图就要使用app_errorhandler(404)
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/env python
#-*- coding:utf-8 -*-

from . import app
from flask import render_template

@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html'),404

@app.errorhandler(500)
def Internal_error(e):
return render_template('500.html'),500

记录log

flask 内部维护了一个logger记录器,可以直接使用app.logger来使用,我们在定义RotatingFileHandler这个类来进行日志格式的定义。这样就完成了

1
2
3
4
5
6
7
8
9
10
11
12
13
14

# microapp/__init__.py

if not app.debug:
if not os.path.exists('logs'):
os.mkdir('logs')

file_handler = RotatingFileHandler('logs/microblog.log',maxBytes=10240,backupCount=10)
file_handler.setFormatter(logging.Formatter(
'%(asctime)s %(levelname)s:%(message)s [in %(pathname)s:%(lineno)d]'
))
app.logger.addHandler(file_handler)
app.logger.setLevel(logging.INFO)
app.logger.info("app startup")