Loguru一个轻松处理日志的模块

简介

Loguru是一个日志处理模块,相较于Python内置的Logging模块,减少了很多繁琐的设置,使得日志记录更加方便。

安装

pip install loguru

触发日志

和logging模块类似,提供了debug()info()warning()error()critical()等方法来触发日志的记录。

from loguru import logger

logger.debug('this is a debug message')
logger.info('this is a info message')
logger.warning('this is a warning message')
logger.error('this is a error message')
logger.critical('this is a critical message')
logger.exception('this is a exception message')

系统配置

默认情况下日志输出到console中,但是如果想要改变这种情况,就需要配置logger的处理池。和logging模块中不同的是,它不需要分别设置Logger, Handler, Filter 和Formatter,而只需要通过add方法即可完成。
其语法结构为logger.add(输出位置,format="输出格式", filter="过滤器", level="日志等级", **kwargs)
参数说明:

  • 第一个形参为日志的输出位置,默认为stderr即console,如果输出到文件,就写成文件的名称

  • format形参表示输出的日志格式,例如format="{time:YYYY-MM-DD HH:mm:ss} {level} {message}"
    可用的值为日志记录的属性,见下表:

  • level形参表示处理的日志等级

  • filter形参表示日志记录的处理器,可以是一个函数,并接收日志信息为参数,返回True表示该条信息将被处理,返回False表示该条信息不会被处理

  • colorize形参表示日志记录时支持颜色显示。例如logger.add(sys.stdout, colorize=True, format="<green>{time}</green> <level>{message}</level>")

删除记录器

每个add()方法都会返回一个值,代表这个记录器。
如果不想使用这个记录器了,可以通过remove(rank_id)方法来删除。
系统默认的处理器通过logger.remove()来删除

每次触发日志时,都会调用所有的记录器进行判断和处理。

from loguru import logger
# 删除默认的记录器
logger.remove()

# 添加文本日志记录器
filelogger = logger.add("mylog_{time}.log", rotation="1 week", rentation="2 weeks", level="ERROR")

文件日志记录系统示例

from loguru import logger

# 将日志记录在文件中,且文件名会根据时间改变
logger.add("logs_{time}.log")

# 根据一些条件进行日志文件的循环处理
logger.add("file_l.log", rotation="500 MB") # 日志文件最大容量500MB,超出将创建新的
logger.add("file_2.log", rotation="12:00")  # 每天12点创建一个新的日志文件
logger.add("file_3.log", rotation="1 week") # 每个星期创建一个新的日志文件

logger.add("file_x.log", retention="10 days") # 10前的日志文件将删除,一般和rotation参数一起使用。
logger.add("file_y.log", compression="zip") # 压缩日志文件,一般和rotation参数一起使用

异常的记录

通过在函数上方添加@logger.catch装饰器,当函数发生异常是,会自动记录该异常到日志中。

@logger.catch
def my_function(x,y):
  return x/y

自定义异常等级

通过level()方法完成异常等级的自定义。
并利用log()方法触发自定义异常等级的日志记录。

new_level = logger.level("SNAKY", no= 38, color="<yellow>", icon="🐍")
logger.log("SNAKY", "Here we go!")

邮件通知

可以通过第三方的处理器来完成邮件通知。

import notifiers

params = {
    "username": "you@gmail.com",
    "password": "abc123",
    "to": "dest@gmail.com"
}

# Be alerted on each error message
from notifiers.logging import NotificationHandler

handler = NotificationHandler("gmail", defaults=params)
logger.add(handler, level="ERROR")
posted @ 2024-06-22 21:50  Python习者  阅读(71)  评论(0)    收藏  举报