flask日志

日志功能的实现

Python 自身提供了一个用于记录日志的标准库模块:logging。

logging 模块

  • logging 模块定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统
  • logging 模块是 Python 的一个标准库模块,由标准库模块提供日志记录 API 的关键好处是所有 Python 模块都可以使用这个日志记录功能。

logging 模块的日志级别

  • logging模块默认定义了以下几个日志等级,它允许开发人员自定义其他日志级别,但是这是不被推荐的,尤其是在开发供别人使用的库时,因为这会导致日志级别的混乱。

    • DEBUG 最详细的日志信息,典型应用场景是 问题诊断
    • INFO 信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
    • WARNING 当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
    • ERROR 由于一个更严重的问题导致某些功能不能正常运行时记录的信息
    • FATAL/CRITICAL 整个系统即将/完全崩溃
  • 开发应用程序或部署开发环境时,可以使用 DEBUG 或 INFO 级别的日志获取尽可能详细的日志信息来进行开发或部署调试;
  • 应用上线或部署生产环境时,应该使用 WARNING 或 ERROR 或 CRITICAL 级别的日志来降低机器的I/O压力和提高获取错误日志信息的效率。

日志级别的指定通常都是在应用程序的配置文件中进行指定的。

logging 模块的使用方式介绍

  • loggers 提供应用程序代码直接使用的接口
  • handlers 用于将日志记录发送到指定的目的位置
  • filters 提供更细粒度的日志过滤功能,用于决定哪些日志记录将会被输出(其它的日志记录将会被忽略)
  • formatters 用于控制日志信息的最终输出格式
# 设置日志的记录等级
logging.basicConfig(level=logging.DEBUG) # 调试debug级
# 创建日志记录器,指明日志保存的路径、每个日志文件的最大大小、保存的日志文件个数上限
file_log_handler = RotatingFileHandler("logs/log", maxBytes=1024*1024*100, backupCount=10)
# 创建日志记录的格式 日志等级 输入日志信息的文件名 行数 日志信息
formatter = logging.Formatter(‘%(levelname)s %(filename)s:%(lineno)d %(message)s‘)
# 为刚创建的日志记录器设置日志记录格式
file_log_handler.setFormatter(formatter)
# 为全局的日志工具对象(flask app使用的)添加日志记录器
logging.getLogger().addHandler(file_log_handler)

使用logging提供的模块级别的函数记录日志

最简单的日志输出

  • 先来试着分别输出一条不同日志级别的日志记录:
import logging

logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")
  • 也可以这样写:
logging.log(logging.DEBUG, "This is a debug log.")
logging.log(logging.INFO, "This is a info log.")
logging.log(logging.WARNING, "This is a warning log.")
logging.log(logging.ERROR, "This is a error log.")
logging.log(logging.CRITICAL, "This is a critical log.")

修改配置改变输出内容

logging.basicConfig(level=logging.DEBUG)

切记:设置 Configurations 中的 Working directory 为当前项目

集成日志到当前项目

  • 在 config.py 文件中在不同的环境的配置下添加日志级别
class Config(object):
    ...

    # 默认日志等级
    LOG_LEVEL = logging.DEBUG

class ProductionConfig(Config):
    """生产模式下的配置"""
    LOG_LEVEL = logging.ERROR
  • 在 info 目录下的 init.py 文件中添加日志配置的相关方法
def setup_log(config_name):
    """配置日志"""

    # 设置日志的记录等级
    logging.basicConfig(level=config[config_name].LOG_LEVEL)  # 调试debug级
    # 创建日志记录器,指明日志保存的路径、每个日志文件的最大大小、保存的日志文件个数上限
    file_log_handler = RotatingFileHandler("logs/log", maxBytes=1024 * 1024 * 100, backupCount=10)
    # 创建日志记录的格式 日志等级 输入日志信息的文件名 行数 日志信息
    formatter = logging.Formatter(‘%(levelname)s %(filename)s:%(lineno)d %(message)s‘)
    # 为刚创建的日志记录器设置日志记录格式
    file_log_handler.setFormatter(formatter)
    # 为全局的日志工具对象(flask app使用的)添加日志记录器
    logging.getLogger().addHandler(file_log_handler)
  • 在 create_app 方法中调用上一步创建的方法,并传入 config_name
def create_app(config_name):
    ...

    # 配置项目日志
    setup_log(config_name)
    app = Flask(__name__)
    ...
  • 在项目根目录下创建日志目录文件夹 logs,如下:
  • 运行项目,当前项目日志已输出到 logs 的目录下自动创建的 log 文件中

    • 在 logs 文件夹下创建 .gitkeep 文件,以便能将 logs 文件夹添加到远程仓库,并在 .gitignore 文件中添加忽略提交生成的日志文件
    logs/log*
    

    在 Flask框架 中,其自己对 Python 的 logging 进行了封装,在 Flask 应用程序中,可以以如下方式进行输出 log:

    current_app.logger.debug(‘debug‘)
    current_app.logger.error(‘error‘)
  • 当前应用程序的 logger 会根据应用程序的调试状态去调整日志级别,如下图:

原文地址:https://www.cnblogs.com/liao-lei/p/9906776.html

时间: 2024-10-30 20:33:49

flask日志的相关文章

FLASK日志记录

from flask import Flask from flask_restful import Resource, Api import logging app = Flask(__name__) api = Api(app) # app.logger.debug('A value for debugging') # app.logger.warning('A warning occurred (%d apples)', 42) # app.logger.error('An error oc

Filebeat7 Kafka Gunicorn Flask Web应用程序日志采集

本文的内容 如何用filebeat kafka es做一个好用,好管理的日志收集工具 放弃logstash,使用elastic pipeline gunicron日志格式与filebeat/es配置 flask日志格式与异常日志采集与filebeat/es配置 以上的配置 概况 我有一个HTTP请求,经过的路径为 Gateway(kong)-->WebContainer(gunicorn)-->WebApp(flask) 我准备以下流向处理我的日志 file --> filebeat -

换种思路解决Linux -> windows的自动部署

场景: 有个项目用到了Windows服务器(运行jar包和.NET代码),如何集成到现有的自动部署平台(基于Linux)面临到两个问题 如何将资源传从Linux传输到Windows上 如何在windows上将程作为后台进程并于终端(cmd or powershell)分离,实现类似Linux下nohup命令达到的效果 对于问题1,一开始想寻找一款"windows版的sshd"程序,但是好像没找到比较官方的:后来想到powershell也有Linux版,想通过在Linux上安装power

flask-logging模块

logging模块 flask配置日志 代码 from logging.handlers import RotatingFileHandler from flask import Flask, request import logging app = Flask(__name__) app.config['PROPAGATE_EXCEPTIONS'] = False # 设置是否传递异常 , 如果为True, 则flask运行中的错误会显示到网页中, 如果为False, 则会输出到文件中 cla

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

Flask使用日志记录的方式: 1. 初始化flask应用实例 在flask中使用logger,需要初始化一个flask的应用 app = Flask(__name__) 2. 调用logger 直接调用logger方法 app.logger.info("my first logging") 这里记录的是info级别的日志 3. 查看结果 运行结果如下: INFO in Code [D:/xxxxx/flask/Code.py:20]: my first logging 默认情况下,f

Flask的错误日志处理和|ORM操作

flask有个很人性化的处理就是 你的错误的输出是可以通过错误日志来自定义  ,让你输入的错误不再是“大黄页”, 通过 errorhandler()来装饰函数之后你的所有的输入错误的函数你都会进入这个函数中,然后我没可以自定义错误日志的输出 errorhandler("报错响应码") @app.errorhandler(404) #当报错是404的时候就走这个函数 def handle_bad_request(e): # return 'bad request!', 400 retur

Flask log配置,实现按照日期自动生成日志文件

Flask自带了logger模块,用来方便程序员群众记录日志,这里粘贴出来的是一段代码,用来初始化日志各项配置参数,并根据日期自动生成日志文件. #log配置,实现日志自动按日期生成日志文件def make_dir(make_dir_path): path = make_dir_path.strip() if not os.path.exists(path): os.makedirs(path) return pathlog_dir_name = "logs"log_file_name

使用py 和flask 实现的日志文件实时显示到网页的功能 + 系统文件夹浏览下载功能。

看日志希望带有彩色,希望从浏览器上看到,不用连到机器上看. 浏览系统的文件夹,scan + 系统文件夹的层级名字当做url路由,可以深层次看到机器上任何层级的文件夹. 如果是点击文件夹进入子目录. 如果是点击文件,尝试以文本格式读取文件,并以实时更新的方式显示到浏览器日志控制台并加彩. 主要是要做到不遗漏推送日志和不重复推送日志,采用的是python 操作文件的seek和tell. 浏览系统目录和下载文件的页面 查看实时日志更新的页面,提供了暂停功能和自动下拉功能.把日志根据级别加了彩色,更容易

【Flask项目】 python学习第一章 - 2.0 日志 抽取蓝图 抽取工厂函数

日志      导入logging函数 # 设置日志的记录等级 logging.basicConfig(level=logging.DEBUG) # 调试debug级 # 创建日志记录器,指明日志保存的路径.每个日志文件的最大大小.保存的日志文件个数上限 file_log_handler = RotatingFileHandler("logs/log", maxBytes=1024*1024*100, backupCount=10) # 创建日志记录的格式 日志等级 输入日志信息的文件