首页 > 编程语言 >Python日志库Loguru教程

Python日志库Loguru教程

时间:2023-09-10 09:56:31浏览次数:32  
标签:logger loguru Loguru level Python add 日志 message

1.为什么选用loguru

python自带的logging模块,需要完成复杂的配置才能很好的使用,基本生产环境都需要进行二次包装。

loguru专门梳理了这方面的问题,可以通过简单直接的配置完成你的需求。

简单的例子:

from loguru import logger
logger.info("hello from loguru")

输出到标准输出:

2023-09-10 09:38:52.275 | INFO     | __main__:<module>:2 - hello from loguru

输出到日志文件:

from loguru import logger

logger.remove(0)
logger.add("out.log")
logger.success("Written message to log file")

2.如何使用loguru

2.1 安装

pip install loguru

最简单的使用:

from loguru import logger

# 在标准输出里面输出一行debug日志
logger.debug("That's it, beautiful and simple logging!")

2.2 日志类型(Level)介绍

loguru提供了七层日志层级,或者说七种日志类型。

生产环境中,常常在不同场景下使用不用的日志类型,用于处理各种问题。

每种类型的日志有一个整数值,表示日志层级,我们成为log level no。

  • TRACE (5): 用于记录程序执行路径的细节信息,以进行诊断。
  • DEBUG (10): 开发人员使用该工具记录调试信息。
  • INFO (20): 用于记录描述程序正常操作的信息消息。
  • SUCCESS (25): 类似于INFO,用于指示操作成功的情况。
  • WARNING (30): 警告类型,用于指示可能需要进一步调查的不寻常事件。
  • ERROR (40): 错误类型,用于记录影响特定操作的错误条件。
  • CRITICAL (50): 严重类型,用于记录阻止核心功能正常工作的错误条件。
logger.trace("A trace message.")
logger.debug("A debug message.")
logger.info("An info message.")
logger.success("A success message.")
logger.warning("A warning message.")
logger.error("An error message.")
logger.critical("A critical message.")

输出如下:

2022-08-10 11:58:33.224 | DEBUG | __main__:<module>:12 - A debug message.
2022-08-10 11:58:33.224 | INFO | __main__:<module>:13 - An info message.
2022-08-10 11:58:33.225 | SUCCESS | __main__:<module>:14 - A success message.
2022-08-10 11:58:33.226 | WARNING | __main__:<module>:15 - A warning message.
2022-08-10 11:58:33.226 | ERROR | __main__:<module>:16 - An error message.
2022-08-10 11:58:33.227 | CRITICAL | __main__:<module>:17 - A critical message.

如果你在linux的终端上,可以看到不同类型的日志,已经有不同的颜色加以区分,默认的配置已经很方便的让我们识别和使用了。

请注意,上述输出不包括TRACE级别的日志信息。这是因为Loguru默认使用DEBUG作为其最低日志级别,导致任何严重性低于DEBUG的日志信息都会被忽略。

如果您想更改默认级别,可以使用下面所示的add()方法的级别参数:

import sys
from loguru import logger

logger.remove(0)
logger.add(sys.stderr, level="INFO")

remove()方法被首先调用,以删除默认处理程序的配置(其ID为0)。然后,add()方法向记录器添加一个新处理程序。该处理程序将记录到标准错误,只记录INFO或更高级别的日志。

2.3 设置日志输出的格式

在日常使用中,如果默认的输出内容不够,我们还可以自定义日志的输出内容和格式。

可以通过add()方法中的格式选项对Loguru生成的日志记录进行重新格式化。

Loguru 中的每条日志记录都是一个 Python 字典,其中包含其时间戳、日志级别等数据。

可以使用loguru提供的格式化指令,包括或重新排列每条信息,如下所示:

import sys
from loguru import logger

logger.remove(0)
logger.add(sys.stderr, format="{time} | {level} | {message}")

logger.debug("Happy logging with Loguru!")

格式参数定义了自定义格式,在这个例子中有三个指令:

{time}:时间戳

{level}:日志级别

{message}:日志消息

输出如下:

2022-08-10T15:01:32.154035-0400 | DEBUG | Happy logging with Loguru!

Loguru还通过其序列化选项支持JSON格式的结构化日志。

这可以让你以JSON格式输出你的日志,这样机器可以很容易地解析和分析它,因为每条记录中的信息将以键/值对的形式提供。

import sys
from loguru import logger

logger.remove(0)
logger.add(sys.stderr, format="{time:MMMM D, YYYY > HH:mm:ss!UTC} | {level} | {message}", serialize=True)
logger.debug("Happy logging with Loguru!")

json格式的输出:

{"text": "August 10, 2022 > 19:38:06 | DEBUG | Happy logging with Loguru!\n", "record": {"elapsed": {"repr": "0:00:00.004000", "seconds": 0.004}, "exception": null, "extra": {}, "file": {"name": "app.py", "path": "C:\\Users\\Eric\\Documents\\Better Stack\\loguru-demo\\app.py"}, "function": "<module>", "level": {"icon": "

标签:logger,loguru,Loguru,level,Python,add,日志,message
From: https://www.cnblogs.com/yoyo1216/p/17690789.html

相关文章

  • 【Python基础】字符串常用方法
    replace()方法replace()方法把字符串中的old(旧字符串)替换成new(新字符串),如果指定第三个参数max,则替换不超过max次。str="ThisisATest"print(str.replace("is","was"))#ThwaswasATest"print(str.replace("is","was",1))#Thwas......
  • python爬虫练习2-百度热榜
    importrequestsfromlxmlimportetreeurl='https://top.baidu.com/board?tab=realtime'headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/116.0.0.0Safari/537.36&......
  • Python开发实例(十五)电子邮件自动化:编写一个程序,自动发送电子邮件或处理收件箱
    在这个实例中,我们将使用Python编写一个程序,实现自动发送电子邮件的功能。我们将使用Python的smtplib库来发送电子邮件。首先,请确保你已经安装了smtplib库。如果没有安装,可以通过以下命令来安装:pipinstallsecure-smtplib下面是一个自动发送电子邮件的Python程序:importsmtplibfro......
  • Python学习笔记-Python判断语句
    布尔类型和比较运算符布尔类型进行判断,只有2个结果:是否程序中,如何描述:是或否?使用:布尔类型。Python中常用的6种值(数据)的类型类型描述说明数字(Number)支持整数(int)浮点数(float)复数(complex)布尔(bool)整数(int),如10、-10浮点数(float),如13.14、-13.14复数(complex),如4+3j,以j结尾表示复数布尔(bool)......
  • 新人如何快速学会Python
    要快速学会Python,首先要了解Python的基本语法和数据类型。Python是一种解释型语言,具有简单易学、高效开发、库丰富等特点。首先,需要掌握Python的基本语法,例如变量、数据类型、控制流语句、函数等。可以通过阅读官方文档、在线教程、书籍等方式进行学习。同时,可以尝试编写简单的Pyt......
  • python学习笔记-celery介绍和使用
    一、celery介绍1、简介celery是分布式任务队列celery在执行任务时需要一个消息中间件来接收和发送消息,以及存储结果,一般使用rabbitmq,rediscelery的优先:简单:配置和使用比较简单高可用:当任务失败或执行过程中连接中断,celery会自动尝试重新执行快速:每分钟可处理上百万个任务灵活:几......
  • Python第四章序列(2):元组
    1.创建元组:  a=('a',2009) //与列表不同,用圆括号  a=()  a=(20,) //当元组中只包含一个元素的时候,需要在元素后加逗号,不然括号会被当成运算符2.元组访问:  a[1]   a[2:5] //也可以用切片  也可以用for的遍历。3.修改元组:  元组不允许......
  • Python第四章序列(1):列表
    1.列表的创建:  a=['hallo','guten',[2002,2223]]  empty_list=[]2.获得列表长度:  len(a)3.创建数值列表:  a=list(range(1,6))  //1到6的列表  b=list(range(1,11,2))  //1到10的奇数列表  c=list(random.sample((0,50),20)) //0到50的......
  • python-day4
    1.两数之和(input高级应用)num1=int(input('num1='))num2=int(input('num2='))print(num1+num2)或者num1=input('num1=')num2=input('num2=')print(type(num1))print(type(num2))print(int(num1)+int(num2))2.运算符算术运算符num1=int(input(�......
  • Python获取主目录的方法
    用os.path.expanduser模块获取主目录为了获得用户的主目录,我们可以使用Python中的os.path.expanduser。我们必须在os.path.expanduser()函数里面传递一个字符串字符~,它将返回当前登录用户的主目录路径。它使用内置的密码数据库或pwd模块来搜索主目录的路径,pwd模块提供用户......