一、日志作用
有时候程序问题/错误在本地环境不会复现,部署到正式环境才出现。
通过日志记录程序运行信息,方便排查、了解程序运行状态。
从 Flask 0.3 版本开始,Flask 内置日志系统。
底层原理:Flask 的
app.logger基于 Python 标准库logging实现。
二、日志级别(优先级从低→高)
| 级别 | 数值 | 说明 |
|---|---|---|
| NOTSET | 0 | 未设置 |
| DEBUG | 10 | 调试信息,开发细节 |
| INFO | 20 | 常规运行信息 |
| WARNING | 30 | 警告,程序可继续运行 |
| ERROR | 40 | 错误,部分功能失败 |
| CRITICAL | 50 | 严重故障,程序无法继续运行 |
日志规则:设置某个级别后,只输出大于等于该数值等级的日志。
三、基础使用方式
Flask 实例自带 app.logger(标准 Logger 对象)
app.logger.debug('调试类型的日志')
app.logger.warning('一个警告类型的出现(%d数量)', 42)
app.logger.error('一个错误的出现')
app.logger.info("我的日志")Code language: JavaScript (javascript)
默认情况下,日志直接打印在控制台(终端屏幕)。
四、把日志保存到文件
1. 核心步骤
1)导入 logging
import loggingCode language: JavaScript (javascript)
2)使用 logging.basicConfig 配置日志输出路径、格式
logging.basicConfig(
filename="D:\\flaskLog\\log.txt",
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)Code language: JavaScript (javascript)
格式参数说明:
%(asctime)s:日志时间%(name)s:日志器名称%(levelname)s:日志等级名称%(message)s:日志消息
注意:Windows路径需要双反斜杠 \\。
五、完整示例
from flask import Flask, session, redirect, url_for, escape, request
import logging
app = Flask(__name__)
# 配置日志写入文件
logging.basicConfig(
filename="D:\\flaskLog\\log.txt",
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
@app.route('/')
def index():
if 'username' in session:
return '当前登录用户是:%s' % escape(session['username'])
# 输出不同等级日志
app.logger.debug('调试类型的日志')
app.logger.warning('一个警告类型的出现( %d数量)', 42)
app.logger.error('一个错误的出现')
app.logger.info("我的日志")
return '你没有登录'Code language: PHP (php)
总结
- 运行访问路由
/后,终端和日志文件都会生成对应日志; - 示例日志输出样式:
[2018-07-18 12:55:27,567] WARNING in HelloBamn: 一个警告类型的出现( 42数量)
[2018-07-18 12:55:27,567] ERROR in HelloBamn: 一个错误的出现Code language: CSS (css)
- 生产环境推荐配置日志级别,过滤大量DEBUG信息,避免日志文件过大。
Previous: Session 会话