首页 > 编程语言 >【转】loguru,一个神奇的 python 库

【转】loguru,一个神奇的 python 库

时间:2023-10-11 10:33:13浏览次数:44  
标签:loguru Loguru python add import 日志 logger 神奇

转载来源:微信公众号:程序员学长  https://mp.weixin.qq.com/s/csxPONEaUbTdoRMd9opuMw

大家好,我是小寒。

今天给大家分享一个神奇的 python 库,loguru

https://github.com/Delgan/loguru

Loguru 是一个旨在为 Python 带来愉快的日志记录的库,它可以完全增强你的日志记录体验,并且非常易于使用。

初体验

库的安装

安装 Loguru 也非常简单,可以直接使用 pip 进行安装。

pip install loguru

在 Loguru 中,如果需要将调试日志输出到终端,可以执行以下操作。

from loguru import logger
logger.debug("That's it, beautiful and simple logging!")

如果需要将日志输出到文件中,只需这样做。

from loguru import logger
logger.add("file_{time}.log")
logger.debug("That's it, beautiful and simple logging!")

这将在当前运行的文件夹中生成 file_current time.log 的日志文件。

滚动日志和压缩

使用 Loguru 你可以轻松实现滚动日志。

按时间滚动

比如要按时间滚动,只需要在 logger.add 参数中添加一个 rotation 参数即可。

from loguru import logger
logger.add("file_2.log", rotation="12:00") # Create new file at 12AM
logger.debug("That's it, beautiful and simple logging!")

这样,如果当前时间超过了这个设定的时间,就会生成一个新的日志文件。如果没有,请使用原始日志文件。

按大小滚动

除了按时间滚动日志外,Loguru 还可以按日志大小滚动。

from loguru import logger
logger.add("file_1.log", rotation="1 MB")
logger.debug("That's it, beautiful and simple logging!")

这样,一旦日志文件大小超过1MB,就会生成一个新的日志文件。

压缩日志

如果你不想删除原来的日志文件,Loguru 还支持直接压缩日志。

from loguru import logger
logger.add("file_Y.log", compression="zip")

其它特性

定制颜色

Loguru 支持自定义颜色,如果你不喜欢它的默认颜色,你可以这样更改。

logger.add(sys.stdout, colorize=True, format="<green>{time}</green> <level>{message}</level>")
多进程安全

Loguru 默认是线程安全的,但它不是多进程安全的。

但如果你需要多进程/异步日志记录,它也支持,只需添加一个 enqueue 参数即可。

logger.add("somefile.log", enqueue=True)
回溯支持

对于日志来说,没有错误栈的日志是没有灵魂的。Loguru 允许你显示整个堆栈信息以帮助你发现问题(包括变量)。例如:

def func(a, b):
    return a / b

def nested(c):
    try:
        func(5, c)
    except ZeroDivisionError:
        logger.exception("What?!")

nested(0)
电子邮件提醒

Loguru 可以与强大的电子邮件通知模块结合使用,以便在程序意外失败时接收电子邮件,或发送许多其他类型的通知。

import notifiers

params = {
    "username": "[email protected]",
    "password": "abc123",
    "to": "[email protected]"
}

# Initialize email
notifier = notifiers.get_notifier("gmail")
notifier.notify(message="The application is running!", **params)

# Email alert for error
from notifiers.logging import NotificationHandler

handler = NotificationHandler("gmail", defaults=params)
logger.add(handler, level="ERROR")

这样配置后,每次产生 Error 日志时,程序都会自动向你的邮箱发送警报,真是方便。除了这些功能之外,Loguru 还支持与 Python 原生 Logging 模块的兼容,你可以将原始标准记录器记录的所有信息转移到 Loguru 中。你还可以基于 Loguru 自定义新的日志级别,并自定义你喜欢的结构化数据。

标签:loguru,Loguru,python,add,import,日志,logger,神奇
From: https://www.cnblogs.com/tynam/p/17756472.html

相关文章

  • Python 动态加载模块
    Python动态加载模块-lwp-boy-博客园(cnblogs.com)python动态导入模块import_module和重载reload-掘金(juejin.cn)关于Python的动态导入(import)-知乎(zhihu.com)1,啥叫动态加载:动态加载指在程序运行中,动态的加载模块,而不是在运行之前利用import或from...imp......
  • python+requests库接口自动化测试(超详细)
         ......
  • Python元类详解
    Python中万物皆对象Python是一门面向对象的语言,所以Python中数字、字符串、列表、集合、字典、函数、类等都是对象。利用type()来查看Python中的各对象类型In[11]:#数字In[12]:type(10)Out[12]:intIn[13]:type(3.1415926)Out[13]:floatIn[14]:#字符串......
  • 《流畅的Python》 读书笔记 第二章数据结构(2) 231011
    2.5对序列使用+和*通常+号两侧的序列由相同类型的数据所构成,在拼接的过程中,两个被操作的序列都不会被修改,Python会新建一个包含同样类型数据的序列来作为拼接的结果+和*都遵循这个规律,不修改原有的操作对象,而是构建一个全新的序列l1=[1,2,3]l2=[4,5,6]print(id(l......
  • Python随机波动率(SV)模型对标普500指数时间序列波动性预测|附代码数据
    原文链接:http://tecdat.cn/?p=22546 原文出处:拓端数据部落公众号 最近我们被客户要求撰写关于随机波动率(SV)模型的研究报告,包括一些图形和统计输出。资产价格具有随时间变化的波动性(逐日收益率的方差)。在某些时期,收益率是高度变化的,而在其他时期则非常平稳。随机波动率模型......
  • Python爬虫必杀技:XPath
    XPath是什么XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,有不同类型的节点,包括元素节点,属性节点和文本节点,提供在数据结构树中找寻节点的能力。跟BeautifulSoup4一样都是用来解析页面内容的工具,只......
  • Python自动筛选、删除Excel不处于给定区间的数据
      本文介绍基于Python语言,读取Excel表格文件,基于我们给定的规则,对其中的数据加以筛选,将不在指定数据范围内的数据剔除,保留符合我们需要的数据的方法。  首先,我们来明确一下本文的具体需求。现有一个Excel表格文件(在本文中我们就以.csv格式的文件为例),如下图所示。  其中,Exc......
  • # yyds干货盘点 #盘点一个Python自动化办公Excel数据填充实战案例(下篇)
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Python自动化办公的问题,一起来看看吧。上一篇【论草莓如何成为冻干莓】大佬给出的方法太深奥了,粉丝没有看懂,这一篇文章,一起来围观大佬在粉丝的代码基础上进行修改出正确的代码。二、实现过程这里是【论草莓......
  • python读取excel测试用例数据
     #excel_readUtil.pyfromopenpyxlimportload_workbookimportpandasclassHandleExcel:"""封装excel文件处理类"""def__init__(self,filename,sheetname=None):"""定义构造方法:p......
  • PythonDay1
    编译型:如谷歌翻译器,英汉互译       解释型:如外交官一对一翻译python解释器下载官网:https://www.pyhton.org ---------Downloads(版本选择)  注释: ......