Flask使用日志记录到文件示例
https://www.polarxiong.com/archives/Flask%E4%BD%BF%E7%94%A8%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95%E5%88%B0%E6%96%87%E4%BB%B6%E7%A4%BA%E4%BE%8B.html
flask的日志记录需要用到python标准库logging的支持。
最简单示例:
from flask import Flask
import logging
app = Flask(__name__)
@app.route('/')
def root():
app.logger.info('info log')
app.logger.warning('warning log')
return 'hello'
if __name__ == '__main__':
app.debug = True
handler = logging.FileHandler('flask.log')
app.logger.addHandler(handler)
app.run()
记录到flask.log中内容为:
info log
warning log
handler = logging.FileHandler('flask.log')
即创建一个log handler,比较常用的有FileHandler和RotatingHandler,其中FileHandler函数原型为
class logging.FileHandler(filename,mode='a',encoding=None,delay=False)
app.logger.addHandler(handler)
即将此handler加入到此app中
app.logger.info('info log')
即以INFO级别将'info log'写入到日志中。
logging的级别主要有NOTSET、DEBUG、INFO、WARNING、ERROR和CRITICAL,挺容易理解的。
高级一些的示例:
from flask import Flask
import logging
app = Flask(__name__)
@app.route('/')
def root():
app.logger.info('info log')
app.logger.warning('warning log')
return 'hello'
if __name__ == '__main__':
app.debug = True
handler = logging.FileHandler('flask.log', encoding='UTF-8')
handler.setLevel(logging.DEBUG)
logging_format = logging.Formatter(
'%(asctime)s - %(levelname)s - %(filename)s - %(funcName)s - %(lineno)s - %(message)s')
handler.setFormatter(logging_format)
app.logger.addHandler(handler)
app.run()
记录到flask.log中内容为:
2015-08-29 10:12:48,004 - INFO - test.py - root - 9 - info log
2015-08-29 10:12:48,004 - WARNING - test.py - root - 10 - warning log
handler.setLevel(logging.DEBUG)
即设置日志记录最低级别为DEBUG,低于DEBUG级别的日志记录会被忽略,不设置setLevel()则默认为NOTSET级别。
logging_format = logging.Formatter(
'%(asctime)s - %(levelname)s - %(filename)s - %(funcName)s - %(lineno)s - %(message)s')
handler.setFormatter(logging_format)
这两句用来控制日志记录格式,效果如上述记录内容;在Python参考文档中有更详细的说明,这里简单介绍一下:
%(asctime)s即日志记录时间,精确到毫秒%(levelname)s即此条日志级别%(filename)s即触发日志记录的python文件名%(funcName)s即触发日志记录的函数名%(lineno)s即触发日志记录代码的行号%(message)s这项即调用如app.logger.info('info log')中的参数,即message
注意:此示例来自Python 3.4.3 和Flask 0.10.1
Flask使用日志记录到文件示例的更多相关文章
- log4j教程 11、日志记录到文件
要写日志信息到一个文件中,必须使用org.apache.log4j.FileAppender.有以下FileAppender的配置参数: FileAppender配置: 属性 描述 immediate ...
- log4j日志记录到文件
要写日志信息到一个文件中,必须使用org.apache.log4j.FileAppender.有以下FileAppender的配置参数: FileAppender配置: 属性 描述 immediate ...
- python中添加日志记录到文件
1.实现python日志功能 2.只输出到文件,不输出到控制台 #encoding:utf-8 import logging from common import path_util logging_ ...
- shell脚本中自定义日志记录到文件
自定义日志函数和前期变量 # adirname - return absolute dirname of given file adirname() { odir=`pwd`; cd `dirname ...
- Log4Net异常日志记录在asp.net mvc3.0的应用
前言 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是简单的介绍如何在Visual ...
- Log4Net异常日志记录在asp.net mvc3.0的应用(转载)
这篇博客写的很好:http://www.cnblogs.com/qianlifeng/archive/2011/04/22/2024856.html 前言 log4net是.Net下一个非常优秀的开源 ...
- ASP.NET Core 异常处理与日志记录
1. ASP.NET Core 异常处理与日志记录 1.1. 异常处理 1.1.1. 异常产生的原因及处理 1.1.2. ASP.NET Core中启动开发人员异常页面 1.2. 日志记录 1.2.1 ...
- python web开发-flask中日志的使用
Flask使用日志记录的方式: 初始化flask应用实例 在flask中使用logger,需要初始化一个flask的应用 app = Flask(__name__) 2. 调用logger 直接调用l ...
- .net 温故知新:【9】.NET日志记录 ILogger使用和原理
日志 日志作为我们程序记录的"黑匣子"是不论什么系统都会使用到的,比如我们经常使用的log4net就是第三方日志记录提供程序.NET 支持使用各种内置和第三方日志记录提供程序的日志 ...
随机推荐
- linux 编译kernel与svn版本冲突解决方法 [drivers/gpu/mali/mali/common/mali_kernel_core.o] 错误 1
问题: 系统正常编译linux系统kernel,安装svn后,kernel编译出错. 错误: CHK include/linux/version.h CHK include/gene ...
- 【鉴别】日版iPhone如何通过IMEI查询运营商
SoftBank.au.docomo是日本的三大运营商,以前日本不同运营商的iPhone在型号上进行区分,但iPhone5s/5c上三个运营商的型号都一致,所以无法在型号上对运营商进行区分,本文介绍通 ...
- CSS学习笔记(4)--选择器(w3school)
CSS3 选择器 在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素. "CSS" 列指示该属性是在哪个 CSS 版本中定义的.(CSS1.CSS2 还是 CSS3.) ...
- DRBD(Distributed Replicated Block Device) 分布式块设备复制 进行集群高可用方案
DRBD是一个用软件实现的.无共享的.服务器之间镜像块设备内容的存储复制解决方案. 外文名 DRBD drbdadm 高级管理工具 drbdsetup 置装载进kernel的DRBD模块 drbdme ...
- Tomcat热部署及错误排查
Maven的热部署 第一步:配置Tomcat的登陆的用户名与密码 C:\apache-tomcat-7.0.33\conf\ tomcat-users.xml 从第36行开始配置 <r ...
- jquery获取的html元素和document获取的元素的区别
最近通过ocx做了一个视频插件,然后将插件放到html中(想知道的可以看一下) 因为我要操作这个插件,要播放,停止等,所以我需要获取这个元素,不出意外的,我就用jquery来获取,然后根本无法执行,然 ...
- selenium使用中遇到的问题
1.Exception in thread "main" org.openqa.selenium.WebDriverException: Cannot find firefox b ...
- 纪念伟大的sb错-noip滚粗
人弱就是弱,被sb错虐翻. 手一抖一生就毁了 开此博文纪念这个伟大的sb错! noip2014 d2t2逆bfs后删点手残没考虑后效性,完美爆80 愿省选rp++,求进noi,orz
- 【BZOJ】1634: [Usaco2007 Jan]Protecting the Flowers 护花(贪心)
http://www.lydsy.com/JudgeOnline/problem.php?id=1634 贪心.. 我们发现,两个相邻的牛(a和b)哪个先走对其它的牛无影响,但是可以通过 a的破坏花× ...
- Linux下面变量的疑问处
SHLVL是Shell累加器的变量,具体请看下面 http://www.cnblogs.com/ziyunfei/p/4803832.html OLDPWD = old pwd(就是是之前一次的pwd ...