Flask中使用日志库loguru

文章目录

  • README.md
  • app.py
  • config.py
  • 参考资料

关于日志记录库loguru的介绍,具体可参见之前的博客:Python日志记录库——loguru

今天来介绍下,如何在Flask中使用loguru日志库。

README.md

This is a simple example of how to use loguru in your flask application
Just create a new InterceptHandler and add it to your app. Different settings should be configured in your config file, so that it is easy to change settings.

这是如何在您的Flask应用程序中使用 loguru 的简单示例
只需创建一个新的 InterceptHandler 并将其添加到您的应用程序中即可。需要在配置文件中配置不同的设置,以便于后续更改应用的设置。

Logging is then as easy as:

from loguru import loggerlogger.info("I am logging from loguru!")

app.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from config import config
from loguru import logger
import loggingdb = SQLAlchemy()# create a custom handler
class InterceptHandler(logging.Handler):def emit(self, record):logger_opt = logger.opt(depth=6, exception=record.exc_info)logger_opt.log(record.levelno, record.getMessage())# application factory pattern 
def create_app(config_name):app = Flask(__name__)app.config.from_object(config[config_name])config[config_name].init_app(app)db.init_app(app)# logging properties are defined in config.pylogger.start(app.config['LOGFILE'], level=app.config['LOG_LEVEL'], format="{time} {level} {message}",backtrace=app.config['LOG_BACKTRACE'], rotation='25 MB')#register loguru as handlerapp.logger.addHandler(InterceptHandler())# register Blueprints here# ...return app

config.py

import osbasedir = os.path.abspath(os.path.dirname(__file__))class Config(object):SECRET_KEY = os.environ.get('SECRET_KEY') or 'SUPER-SECRET'LOGFILE = "log.log"class DevelopmentConfig(Config):DEBUG = TrueLOG_BACKTRACE = TrueLOG_LEVEL = 'DEBUG'class ProductionConfig(Config):LOG_BACKTRACE = FalseLOG_LEVEL = 'INFO'config = {'development': DevelopmentConfig,'production': ProductionConfig,'default': DevelopmentConfig
}

参考资料

  • https://gist.github.com/M0r13n/0b8c62c603fdbc98361062bd9ebe8153
  • flask loguru简单示例
  • Python自动化之使用loguru优雅输出日志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/706961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Godot4自学手册】第十七节主人公的攻击和敌人的受伤

本节主要学习主人公是如何向敌人发起进攻的,敌人是如何受伤的,受伤时候动画显示,击退效果等。其原理和上一节内容相同,不过有许多细节需要关注和完善。 一、修改Bug 在本节学习之前,我将要对上一节的代码进行完善&am…

租赁系统|租赁软件提供免押金等多种租赁方式

租赁小程序是一种全新的租赁模式,为用户提供了免押金、多种租赁方式、定制化服务等多项优势,让用户的租赁体验更加美好。让我们来了解一下它的特点和功能。 首先,租赁小程序支持租完即送,无需等待固定租期。它提供了多种租赁方式&…

bash和sh和./的区别

bash和sh和./的区别 今天在执行一个脚本的时候,用的是sh script.sh,执行报错,使用bash script.sh执行时就能成功,才知道sh和bash是不一样的 sh sh表示 Bourne Shell,是 Unix 系统上的一种基本的命令解释器。它也可以…

GPT与MBR:硬盘分区表格式的革新与区别

概述 在计算机存储领域,硬盘分区是管理数据和操作系统部署的基础。两种广泛使用的分区表格式——MBR(Master Boot Record)和GPT(GUID Partition Table),各自代表了不同的技术阶段和发展需求。本文将详细介…

NR 2-STEP RA Absolute Timing Advance Command MAC CE的应用场景

3 GPP在 R2-2002413中将2-step RA引入,进而R16 38.321出现了 Absolute TAC MAC CE,在 NR Timing Advance(TA)_ntn rrc-CSDN博客 有提到这个MAC CE,当时以“absolute timing advance command MAC CE 在2-step RA的某个场景下使用”一笔带过&am…

python使用unittest进行单元测试

文章目录 示例程序更多assert方法 通过一种规范的测试方法,可以帮助我们在修改程序后能够快速的检测一些bug,使用unittest库的方法如下: 示例程序 import unittestclass Demo01(unittest.TestCase):classmethoddef setUpClass(self) -> …

设计模式----装饰器模式

在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在不改变其结构的情况下,可以动态地扩展其功能。所有这些都可以釆用装饰器模式来实现。 装饰器模式 允许向一个现有的对象添加新的功能,同时又不改变他的…

MQTT协议解析:揭秘固定报头、可变报头与有效载荷的奥秘

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种轻量级的通讯协议,常用于远程传感器和控制设备的通讯。MQTT协议基于发布/订阅模式,为大量计算能力有限且工作在低带宽、不可靠网络环境中的设备…

Java集合基础梳理(集合体系+ArrayList)

目录 Java集合体系 为什么要使用集合类 ? 如何选用集合? 哪些集合类是线程安全的?哪些不安全? 快速失败(fail-fast)和安全失败(fail-safe)的区别是什么? 遍历的同时修改一个List有几种方式 ArrayList 如何进行元素的遍历操作&#x…

Spring Boot项目误将Integer类型写成int来进行传参

在处理项目中Idea中无报错: 问题: localhost:8080/param/m2在浏览器中输入:localhost:8080/param/m2 产生报错: This application has no explicit mapping for /error, so you are seeing this as a fallback. Tue Feb 27 20:55…

Android PMS——系统更新和版本管理(十三)

当 Android 系统进行升级时,PMS(Package Manager Service)在系统更新和版本管理中扮演着关键角色。PMS 负责确保应用程序在新的系统版本上能够正常运行,这涉及到一系列的适配流程,具体如下: 检测不兼容应用:在系统升级过程中,PMS首先会扫描已安装的应用程序,识别出那些…

git上传了一个文件到远程仓库里面,之后如何忽略它

我们可能会遇到这种情况,因为一些失误或者别人的粗心,将一些本地的文件上传到了远程仓库,而且这个文件是环境相关的,随着不同开发者的环境,编译器会动态修改,从而导致每个人都不同 在提交过程中相互覆盖&a…

Redis哨兵模式和Redis Cluster模式

文章目录 🔊博主介绍🥤本文内容Redis Cluster 模式支持自动故障转移功能吗?Redis Cluster 模式支持自动故障转移功能和哨兵有什么区别?Redis Cluster 模式和哨兵模式(Sentinel)在自动故障转移方面有一些关键…

Java最新面试宝典 SpringMVC面试题)

Java最新面试宝典 SpringMVC面试题 前言1、什么是SpringMVC?2、SpringMVC 的优点?3、Spring MVC配置步骤?4、SpringMVC工作原理了解吗?5、Spring MVC 核心组件的功能?6、B/S 系统标准的三层架构是什么?7、C…

计算机网络:深入探索HTTP

引言: HTTP,全称超文本传输协议(Hypertext Transfer Protocol),是互联网上数据通信的基础。它定义了客户端(如浏览器)和服务器之间如何交互和传输数据。HTTP最初是为了支持Web浏览而设计的&…

1200页文档笔记,java数据库面试问题

Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。Spring更是避免了重复造轮子的工作并跟随着互联网行业的发展做出不断的更新,很多研发人员把spring看作心目中最好的Java项目,没有之一。 **可以毫不夸张…

MySQL篇—持久化和非持久化统计信息介绍(第一篇,总共三篇)

☘️博主介绍☘️: ✨又是一天没白过,我是奈斯,DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣…

c++委托构造函数与类的类型自动转换

前言 记录看书复习到的2个知识点 委托构造函数类类型自动转换 c11标准之后,类允许初始化数据成员,但是根据抽象派(老派)人员的观点,类一个抽象的东西,怎么能有具体的数值呢,就算要有默认数据…

送给2024数学建模参赛者20句话,学到就是赚到!

新学期来临,又到了备战数学建模竞赛火热时期,昨天为大家分享了常见的高含金量数模赛事,结合往届数学建模竞赛常见的问题及误区,数乐君给数模乐园铁粉们总结了20条数学建模竞赛参赛忠告,比赛期间绝对可以用到&#xff0…

C#单向链表实现:使用泛型的方法设计

目录 1.先设计一个泛型节点类Node 2.再设计一个泛型链表类LinkedList 3.创建一个LinkedList类的实例 4.完整的实例 再发一篇使用泛型的方法设计单向链表。 以下是一个使用泛型节点类和LinkedList<T>类的示例&#xff0c;其中包含Insert方法用于插入新节点&#xff0c…