Flask框架-配置日志(1):flask使用日志

这篇具有很好参考价值的文章主要介绍了Flask框架-配置日志(1):flask使用日志。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、项目结构

study_flask

        --| apps/

                --| __init__.py

        --| base/

                --| logger.py

                --| __init__.py

        --| app.py

二、配置日志功能

1、base/logger.py

import os
import logging
from datetime import datetime,date,timedelta
from logging.handlers import RotatingFileHandler, TimedRotatingFileHandler
#项目根目录
BASE_DIR = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
#日志文件存放的目录
LOGS_DIR = os.path.join(BASE_DIR,'logs')
#使用RotatingFileHandler日志处理器,生成的日志文件存放的位置
FILE_LOGS_DIR = os.path.join(LOGS_DIR,'file_handler')
#使用TimedRotatingFileHandler日志处理器,生成的日志文件存放的位置
TIME_LOGS_DIR = os.path.join(LOGS_DIR,'time_handler')

#创建logs目录
if not os.path.exists(LOGS_DIR):
    os.makedirs(LOGS_DIR)
#创建logs/file_handler目录
if not os.path.exists(FILE_LOGS_DIR):
    os.makedirs(FILE_LOGS_DIR)
#创建logs/time_handler目录
if not os.path.exists(TIME_LOGS_DIR):
    os.makedirs(TIME_LOGS_DIR)


#1、基于文件大小切割的日志处理器
def getLogHandlerFile():
    # 文件名,以日期作为文件名
    log_file_name = date.today().strftime('%Y-%m-%d.log')
    # 构建日志文件的路径
    log_file_str = os.path.join(FILE_LOGS_DIR,log_file_name)

    '1、日志记录格式'
    # 默认日志等级的设置
    # logging.basicConfig(level=logging.INFO)
    # 设置日志的格式:发生时间,日志等级,日志信息文件名,      函数名,行数,日志信息
    formatter = logging.Formatter('[%(asctime)s][%(levelname)s][%(pathname)s: %(funcName)s function: %(lineno)s line]: %(message)s')

    '2、基于文件的日志处理器配置'
    # 创建日志记录器,指明日志保存路径,每个日志的大小,保存日志的上限
    file_log_handler = RotatingFileHandler(
        filename=log_file_str,   #日志文件名
        maxBytes=1024 * 1024 * 10,  #文件大小超过10MB后,就会生成一个新的日志文件,日志就写到新的文件中
        backupCount=10,  #最大支持总的日志文件数
        encoding='UTF-8')
    file_log_handler.setFormatter(formatter)  # 设置日志的格式
    file_log_handler.setLevel(logging.INFO)  # 设置日志等级
    return file_log_handler  # 基于文件大小分割日志的方案

#2、基于时间切割的日志处理器
def getLogHanderTime():
    # 文件名,以日期作为文件名
    log_file_name = datetime.today().strftime('%Y-%m-%d-%H-%M.log')
    # 构建日志文件的路径
    log_file_str = os.path.join(TIME_LOGS_DIR, log_file_name)

    '1、日志记录的格式'
    # 默认日志等级的设置
    # logging.basicConfig(level=logging.DEBUG)
    # 设置日志的格式:发生时间,日志等级,日志信息文件名,      函数名,行数,日志信息
    formatter = logging.Formatter('[%(asctime)s][%(levelname)s][%(pathname)s: %(funcName)s function: %(lineno)s line]: %(message)s')

    '2、基于时间的日志处理器'
    '''
    # 往文件里写入指定间隔时间自动生成文件的Handler
    # 实例化TimedRotatingFileHandler
    # interval是时间间隔,backupCount是备份文件的个数,如果超过这个个数,就会自动删除,when是间隔的时间单位,单位有以下几种:
    # S 秒
    # M 分
    # H 小时
    # D 天
    # 'W0'-'W6' 每星期(interval=0时代表星期一:W0)
    # midnight 每天凌晨
    '''
    file_log_time_handler = TimedRotatingFileHandler(
        filename=log_file_str, #日志文件的路径
        when='midnight', #凌晨零点进行文件分割
        backupCount=0, #保留旧文件数0
        interval=1, #分割一次
        encoding='utf-8')  # 日志处理器
    file_log_time_handler.setFormatter(formatter)  # 日志格式
    file_log_time_handler.setLevel(logging.DEBUG)  # 日志等级

    return file_log_time_handler  # 基于文件大小分割日志的方案


if __name__ == '__main__':
    from flask import current_app
    current_app.logger.error('手动写日志时')

2、apps/__init__.py

from base.loggers import getLogHanderTime,getLogHandlerFile
import logging
from flask import Flask

def create_app():
    #创建一个flask实例,传递__name__ ,是把当前文路径作为flask实例的根路径
    #static和templates都是创建在该路径下的
    app = Flask(__name__,static_folder='../static',template_folder='../templates') #static目录位置是上层的static
    '基本配置'
    '日志使用'
    app.logger.addHandler(getLogHanderTime())
    app.logger.addHandler(getLogHandlerFile())
    app.logger.setLevel(logging.DEBUG)
    
    return app

三、测试使用

1、在视图中使用

from flask import current_app
current_app.logger.error('手动写日志时')

2、在视图中抛出一个异常

四、日志文件

基于文件大小分割的日志文件路径: logs/file_handler/年-月-日.log

基于时间间隔分割的日志文件路径:logs/time_handler/年-月-日.log文章来源地址https://www.toymoban.com/news/detail-654882.html

到了这里,关于Flask框架-配置日志(1):flask使用日志的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Dockerfile构建python项目镜像(flask框架+redis+环境变量)

    有时候如连接redis的url可能发生变化等,这时候就需要把一些变量放在环境变量中。         使用 --env 和 -e 是一样效果的。 1.1.1 配置Dockerfile文件 1.1.2 编写python示例程序 示例代码: 1.1.3 构建镜像         首先将python代码和dockerfile文件上传到已经安装了docker的服务器

    2024年02月07日
    浏览(47)
  • Python - flask后端开发笔记

    ​ Flask入门 有一篇很全面的博客可以参考:Python Flask Web 框架入门 跨域问题处理 文件发送 ​

    2024年02月07日
    浏览(63)
  • Python使用flask框架与前端建立websocket链接,并进行数据交互

    后端采用的框架为flask,前端用的flask自带的html编写,实现的功能为:前后端建立websocket链接并进行数据交互 一、编写一个flask后端服务 常规创建方式就可以,创建一个flask服务。声明一个websocket实例,以websocket的方式启动这个服务。 安装相关依赖: 声明应用和websocket实例

    2024年04月11日
    浏览(45)
  • 【100天精通Python】Day49:Python Web编程_Web框架,Flask框架从安装到使用

    目录 1 Web 框架 2 python 中常用的web框架 3 Flask 框架的使用 3.1 Flask框架安装 3.2 第一个Flask程序 3.3 路由 3.3.1 基本路由

    2024年02月09日
    浏览(47)
  • Flask框架小程序后端分离开发学习笔记《2》构建基础的HTTP服务器

    Flask是使用python的后端,由于小程序需要后端开发,遂学习一下后端开发。本节提供一个构建简单的本地服务器的代码,仔细看注释,学习每一步的流程,理解服务器接收请求,回复响应的基本原理。 代码效果,运行之后,在浏览器输入:localhost:2000 总结 1.导入socket库:这个库

    2024年01月18日
    浏览(43)
  • 【100天精通python】Day50:python web编程_web框架,Flask的使用

    目录 1 Web 框架 2 python 中常用的web框架 3 Flask 框架的使用 3.1 Flask框架安装 3.2 第一个Flask程序 3.3 路由 3.3.1 基本路由

    2024年02月10日
    浏览(45)
  • Flask框架小程序后端分离开发学习笔记《4》向服务器端发送模拟请求-爬虫

    Flask是使用python的后端,由于小程序需要后端开发,遂学习一下后端开发。 下面代码,是一个比较老的版本了,可以借鉴一下。 最后尝试请求豆瓣的网页,并未得到,我怀疑是有反爬手段,我们的请求数据还有很多东西没加进去,所以看起来不像是浏览器发送的请求,后续会

    2024年01月20日
    浏览(49)
  • 手把手教你使用Flask框架构建Python接口以及如何请求该接口

    Flask是一个轻量级的Web应用框架,基于Python编写,其核心思想是保持简洁,灵活性和易于扩展。 Flask是一个轻量级的Web应用框架,基于Python编写,其核心思想是保持简洁,灵活性和易于扩展。Flask提供了基本的Web开发工具和应用程序的结构,但同时也允许开发者自由选择其他库

    2024年02月06日
    浏览(103)
  • Flask框架小程序后端分离开发学习笔记《3》客户端向服务器端发送请求

    Flask是使用python的后端,由于小程序需要后端开发,遂学习一下后端开发。 可以看到上述代码构建了一个HTTP请求,在发送之前需要将发送之前,使用http_request.encode(‘utf-8’)。 这是因为我们在这构建的请求是字符串文本,而电脑只认识二进制0和1,所以需要将其数据类型转换

    2024年01月22日
    浏览(52)
  • 【Python】极简部署私有化ChatGPT-Web,使用Flask框架编写网页版ChatGPT

    python环境下可极简配置 windows、linux、mac os均可部署 支持多用户使用 多对话管理 公式显示 流式逐字加载显示 代码高亮 仓库链接地址:https://github.com/LiangYang666/ChatGPT-Web,用的好麻烦给个star啦 可参照README 执行 python flask_main.py 运行程序.若程序中未指定apikey也可以在终端执行时

    2024年02月01日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包