Python3 – Flask之logging日志的使用

前言:
日志是一种可以追踪某些软件运行时所发生事件的方法;软件开发人员可以向他们的代码中调用日志记录相关的方法表明发生了某些事情;一个事件可以用一个可包含可选变量数据的消息来描述;事件也有重要性的概念,这个重要性也可以称为严重性级别(level)

0.实施步骤

Logging的使用就是三个步骤:

  • 创建记录器
  • 日志的格式、等级设置
  • 添加记录器

1.日志等级说明

等级: DEBUG < INFO < WARNING < ERROR < CRITICAL

DEBUG : 最详细的日志信息,主要的应用场景问题的诊断,只限于开发人员使用的,用来在开发过程中进行调试

INFO : 详细程度仅次于debug模式,主要来记录关键节点的信息,确定程序是否正常如预期完成,一般的使用场景是重要的业务处理已经结束,我们通过这些INFO级别的日志信息,可以很快的了解应用正在做什么。

WARNING : 当某些不被期望的事情发生的时候,需要记录的信息,比如磁盘即将存满,注意当前的程序一依旧可以正常运行,不报错。也就是说发生这个级别的问题时,处理过程可以继续,但必须要对这个问题给予额外的关注。

ERROR : 出现严重问题,导致某些功能不能正常运行记录信息

CRITICAL: 系统即将崩溃或者已经崩溃

注意:
DEBUG: 设置的话,那么使用 app.logger 打印的日志仍会不分等级均记录,而系统运行日志才会按照设置的等级进行记录。

WARNING: 这个等级,那么不管是 app.logger 打印的日志, 还是系统运行日志, 均按照设置等级进行记录。

2.日志分割

LogHandle 封装: 自定义日志的格式、等级设置;
这里分别使用了以 文件大小分割时间分割日志方式实例:

import os
import logging
import time
from logging.handlers import RotatingFileHandler, TimedRotatingFileHandler

def make_dir(make_dir_path):
    path = make_dir_path.strip()
    if not os.path.exists(path):
        os.makedirs(path)

def getLogHandler():

    log_dir_name = "../Logs"

    log_file_name = 'logger-' + time.strftime('%Y-%m-%d', time.localtime(time.time())) + '.log'

    log_file_folder = os.path.abspath(
        os.path.join(os.path.dirname(__file__), os.pardir)) + os.sep + log_dir_name
    make_dir(log_file_folder)
    log_file_str = log_file_folder + os.sep + log_file_name

    logging.basicConfig(level=logging.WARNING)

    '''
    # 基于时间分割
    # 往文件里写入指定间隔时间自动生成文件的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='D', backupCount=10, encoding='utf-8')

    formatter = logging.Formatter(
        '%(asctime)s - %(levelname)s - %(filename)s - %(funcName)s - %(lineno)s - %(message)s')

    file_log_time_handler.setFormatter(formatter)

    return file_log_time_handler

3.创建记录器

def create_app():
    app = Flask(__name__, static_folder='../static')
    app.config.from_object(ProductionConfig)

    app.logger.addHandler(LogHandle.getLogHandler())

    @app.before_request
    def log_each_request():
        app.logger.info('【请求方法】{}【请求路径】{}【请求地址】{}'.format(request.method, request.path, request.remote_addr))

    ctx = app.app_context()
    ctx.push()

    print(app.url_map)
    return app

4.添加记录器


from flask import Flask, current_app

current_app.logger.info('info log')
current_app.logger.debug('debug log')
current_app.logger.warning('warning log')
current_app.logger.error('error log')
current_app.logger.critical('critical')

打印:

2022-03-18 16:41:23,388 - INFO - __init__.py - check_sign - 18 - info log
2022-03-18 16:41:23,388 - DEBUG - __init__.py - check_sign - 19 - debug log
2022-03-18 16:41:23,388 - WARNING - __init__.py - check_sign - 20 - warning log
2022-03-18 16:41:23,388 - ERROR - __init__.py - check_sign - 21 - error log
2022-03-18 16:41:23,388 - CRITICAL - __init__.py - check_sign - 22 - critical

需要注意: 测试时可能不打印, 放在生产环境即会打印.

Original: https://blog.csdn.net/qq_31810357/article/details/123579728
Author: 韩俊强
Title: Python3 – Flask之logging日志的使用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/744651/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux下OpenCV出现错误:ASSERT false in file qasciikey.cpp, line 501

    原文链接 Linux下OpenCV,出现错误: ASSERT false in file qasciikey.cpp, line 501 可能是OpenCV的版本有问题,需要重新安…

    Python 2023年5月24日
    0101
  • 西门子S7-200 SMART PLC编程初体验

    0x00 前期准备 1. 了解西门子 西门子中国公司官网 2. 了解西门子S7-200 SMART 西门子S7-200 SMART 更智能,更经济的控制器官方提供了STEP 7- …

    Python 2023年6月12日
    090
  • python写文件

    写文本文件 案例:将锄禾这首诗写入test.txt文件中 mode=w 没有文件就创建,有就清除内容,小心使用 with open(‘test.txt’, ‘w’, encodin…

    Python 2023年6月11日
    065
  • Matplotlib 散点图

    我们可以使用 pyplot 中的 scatter() 方法来绘制散点图。 scatter() 方法语法格式如下: matplotlib .pyplot .scatter (x ,y…

    Python 2023年9月1日
    048
  • 自动化测试 —— Pytest测试框架

    01 | 简介 Pytest是一个非常成熟的全功能的Python测试框架,主要有以下特点: 简单灵活,容易上手,文档丰富 支持参数化,可以细粒度地控制测试用例 支持简单的单元测试与…

    Python 2023年9月10日
    045
  • Windows10系统如何安装配置allure工具

    【原文链接】Windows10系统如何安装配置allure工具 1 确保win10环境已经正确安装java包 ; 2 下载allure包 打开github上allure包的发布地址…

    Python 2023年9月12日
    049
  • 【python新手入门】Matplotlib库学习笔记(2)

    目录 1 简单图绘制与设置 * 1.1 模块导入与函数说明 1.2 绘图设置 – 1.2.1 plt.figure()设置图形窗口 1.2.2 plt.xlim()设置…

    Python 2023年9月2日
    041
  • Task03字典元组布尔类型读写文件

    字典、元组、布尔类型、读写文件 (一)字典 比较列表与字典:列表只能用数字获取数据,字典可以用任何东西获取数据 things=[‘a’,’b’,’c’,’d’] print(thi…

    Python 2023年9月24日
    032
  • 如何用python远程探查每天的网页访问记录

    Original: https://www.cnblogs.com/123456feng/p/16206960.htmlAuthor: 蚂蚁ailingTitle: 如何用pyth…

    Python 2023年11月2日
    061
  • Python基础学习之飞机大战游戏类框架搭建

    目标 明确主程序职责 实现主程序类 准备游戏精灵组 01.明确主程序 职责游戏主程序的职责可以分为两个部分:游戏初始化;游戏循环 根据职责,设计 PlaneGame 类如下: Pl…

    Python 2023年9月24日
    048
  • Python处理(加载、合并)多个csv文件

    数据集介绍:本数据集是某化工系统的数据,一共有很多个月的,我这里就拿一个月的数据集,August_data(八月的数据集),一共有31个csv文件。 方法一 for循环遍历+os….

    Python 2023年8月7日
    062
  • 蚂蚁链的学习笔记

    一、了解蚂蚁链 BaaS 平台的基本功能、特性、优势 蚂蚁链以联盟链为目标,突破商业与金融应用场景,率先实现有自主权的工业级与金融级区块链系统,具有高可靠性、高可运维性、高安全性和…

    Python 2023年11月8日
    081
  • 《深入浅出计算机组成原理》学习笔记 Day5

    动态链接 * – 1. 静态链接与动态链接 – 2. 地址无关 – 3. PLT 和 GOT – 参考 1. 静态链接与动态链接 静…

    Python 2023年11月6日
    023
  • 如何用智能地教狗狗上厕所

    背景 22年养了一只很可爱的小狗狗,我其实就一个问题:为啥这么可爱的狗狗会拉屎撒尿呀? 自从崽崽来了我们家之后,最让我们头疼的就是它乱拉、乱尿的问题了,以前会在家里到处乱来,最近一…

    Python 2023年10月29日
    038
  • apache2.4 + django + windows10 自动化部署

    在django项目中建立一个 webhooks url 路由, 在该路由下异步执行自动化部署脚本 在未部署的时候, 访问该路由 是没有问题的 成功执行了脚本脚本涉及两个内容 拉取更…

    Python 2023年8月6日
    041
  • 03 最小CMake项目

    03 最小CMake项目 所有CMake项目都从一个CMakeLists.txt文件开始,此文件应该放在源代码树的最顶层目录下。可以将CMakeLists.txt想象成CMake项…

    Python 2023年10月22日
    037
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球