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")


浙公网安备 33010602011771号