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的支持。

最简单示例:

Python
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

Python
handler = logging.FileHandler('flask.log')

即创建一个log handler,比较常用的有FileHandler和RotatingHandler,其中FileHandler函数原型为

Python
class logging.FileHandler(filename,mode='a',encoding=None,delay=False)
Python
app.logger.addHandler(handler)

即将此handler加入到此app中

Python
app.logger.info('info log')

即以INFO级别将'info log'写入到日志中。

logging的级别主要有NOTSET、DEBUG、INFO、WARNING、ERROR和CRITICAL,挺容易理解的。


高级一些的示例:

Python
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
Python
handler.setLevel(logging.DEBUG)

即设置日志记录最低级别为DEBUG,低于DEBUG级别的日志记录会被忽略,不设置setLevel()则默认为NOTSET级别。

Python
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使用日志记录到文件示例的更多相关文章

  1. log4j教程 11、日志记录到文件

    要写日志信息到一个文件中,必须使用org.apache.log4j.FileAppender.有以下FileAppender的配置参数: FileAppender配置: 属性 描述 immediate ...

  2. log4j日志记录到文件

    要写日志信息到一个文件中,必须使用org.apache.log4j.FileAppender.有以下FileAppender的配置参数: FileAppender配置: 属性 描述 immediate ...

  3. python中添加日志记录到文件

    1.实现python日志功能 2.只输出到文件,不输出到控制台 #encoding:utf-8 import logging from common import path_util logging_ ...

  4. shell脚本中自定义日志记录到文件

    自定义日志函数和前期变量 # adirname - return absolute dirname of given file adirname() { odir=`pwd`; cd `dirname ...

  5. Log4Net异常日志记录在asp.net mvc3.0的应用

    前言 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是简单的介绍如何在Visual ...

  6. Log4Net异常日志记录在asp.net mvc3.0的应用(转载)

    这篇博客写的很好:http://www.cnblogs.com/qianlifeng/archive/2011/04/22/2024856.html 前言 log4net是.Net下一个非常优秀的开源 ...

  7. ASP.NET Core 异常处理与日志记录

    1. ASP.NET Core 异常处理与日志记录 1.1. 异常处理 1.1.1. 异常产生的原因及处理 1.1.2. ASP.NET Core中启动开发人员异常页面 1.2. 日志记录 1.2.1 ...

  8. python web开发-flask中日志的使用

    Flask使用日志记录的方式: 初始化flask应用实例 在flask中使用logger,需要初始化一个flask的应用 app = Flask(__name__) 2. 调用logger 直接调用l ...

  9. .net 温故知新:【9】.NET日志记录 ILogger使用和原理

    日志 日志作为我们程序记录的"黑匣子"是不论什么系统都会使用到的,比如我们经常使用的log4net就是第三方日志记录提供程序.NET 支持使用各种内置和第三方日志记录提供程序的日志 ...

随机推荐

  1. JavaScript 高程三读书笔记;

    1. 在使用 <script> 嵌入 JavaScript 代码时,记住不要在代码中的任何地方出现 "</script>" 字符串. 例如,浏览器在加载下面 ...

  2. love2d杂记9--光照效果

    光照效果需要用shader,这个我一直没学,现在时间较少,先放到这里,有时间我再补,如果大家 发现好的opengl shader教程(如果没记错的love2d用的是glsl 1.1),推荐一下. 这里 ...

  3. Unix系统编程()检查进程的存在

    检查进程的存在 kill系统调用还有另一重功用.若将参数sig指定为0(即所谓空信号),则无信号发送. 相反,kill仅会去执行错误检查,查看是否可以向目标进程发送信号. 从另一角度来看,这意味着,可 ...

  4. getopt--parse command line options

    getopt解析命令行选项 getopt, getopt_long, getopt_long_only, optarg, optind, opterr, optopt - Parse command- ...

  5. php5共存php7

    PHP7与PHP5共存于CentOS7 原文参考 原理 思路很简单:PHP5是通过yum安装的在/usr/,套接字在/var/run/php-fpm.socket,PHP7自己编译装在/usr/loc ...

  6. [android] AndroidManifest.xml - 【 manifest -> 其他次要配置】

    <uses-sdk> 作用:使应用程序的兼容性更好,指明应用程序需要的最小API,编译API以及最大支持的API.值都是整数 <uses-sdk android:minSdkVers ...

  7. yum 安装 influxdb/telegraf

    环境:centos 7 参考官网教程:http://docs.influxdata.com/telegraf/v1.9/introduction/installation/ 添加 yum 源: vim ...

  8. 001servlet的基本知识

    servlet的知识: l  1. servlet概念及相关接口简介 l  2. servet 执行过程 l  3. servlet路径映射 l  4. 缺省servlet          --应用 ...

  9. 转载:Struts2支持断点续传下载实现

    转自:http://blog.sina.com.cn/s/blog_667ac0360102eckm.html package com.ipan.core.controller.web.result; ...

  10. js获取url中指定参数的值(含带hash)

    function getUrlVars() { var vars = {}; var parts = window.location.href.replace(/[?&]+([^=&] ...