loguru 由简入繁
创始人
2024-02-07 14:27:19

loguru 日志管理模块

1. 基础使用:

from loguru import loggerlogger.add(time.strftime(f'./log/device_set_log_%Y%m%d.log'))

2. 日志分级

Level NameSeverty ValueLogger Method
TRACE5logger.trace()
DEBUG10logger.debug()
INFO20logger.info()
SUCCESS25logger.success()
WARING30logger.waring()
ERROR40logger.error()
CRITICAL50logger.critical()

3. 分割日志

  • 根据大小分割日志
logger.add("file_1.log", rotation="500 MB")    # Automatically rotate too big file
  • 根据时间分割日志
logger.add("file_2.log", rotation="12:00")  # New file is created each day at noonlogger.add("/data/log/demo/demo.{time:YYYY-MM-DD}.log", rotation="12:00")  # New file is created each day at noonlogger.add("file_3.log", rotation="1 week")  # Once the file is too old, it's rotatedlogger.add("file_X.log", retention="10 days")  # Cleanup after some timelogger.add("file_Y.log", compression="zip")  # Save some loved space

4. 日志保存时长

保留 15 天

logger.add('runtime_{time}.log', retention='15 days')

保留 15 个

logger.add('runtime_{time}.log', retention=10)

保留 15 个小时

import datetime
from loguru import loggerlogger.add('runtime_{time}.log', retention=datetime.timedelta(hours=5))

5. 日志压缩

支持的压缩格式:gz、bz2、xz、lzma、tar、tar.gz、tar.bz2、tar.xz

logger.add('runtime_{time}.log', compression='zip')

6. 日志重定向

  logger 默认采用 sys.stderr 标准错误输出将日志输出到控制台中

  移除已有的日志处理对象 logger.remove(handler_id=None)

7. 常用参数解析

参数说明
sink可以传入一个 file 对象(file-like object),
或一个 str 字符串或者 pathlib.Path 对象,
或一个方法(coroutine function),
或 logging 模块的 Handler(logging.Handler)。
level (int or str, optional)应将已记录消息发送到接收器的最低严重级别。
format (str or callable, optional)格式化模块,在发送到接收器之前,使用模板对记录的消息进行格式化。
filter (callable, str or dict, optional)用于决定每个记录的消息是否应该发送到接收器。
colorize (bool, optional)是否应将格式化消息中包含的颜色标记转换为用于终端着色的Ansi代码,或以其他方式剥离。如果None,根据水槽是否为TTY自动作出选择。
serialize (bool, optional)在发送到接收器之前,记录的消息及其记录是否应该首先转换为JSON字符串。
backtrace (bool, optional)格式化的异常跟踪是否应该向上扩展,超出捕获点,以显示生成错误的完整堆栈跟踪。
diagnose (bool, optional)异常跟踪是否应该显示变量值以简化调试。在生产中,这应该设置为“False”,以避免泄漏敏感数据。
enqueue (bool, optional)要记录的消息在到达接收器之前是否应该首先通过多进程安全队列。当通过多个进程将日志记录到文件中时,这是非常有用的。这还具有使日志调用非阻塞的优点。
catch (bool, optional)是否应该自动捕获接收器处理日志消息时发生的错误。如果True上显示异常消息 sys.stderr。但是,异常不会传播到调用者,从而防止应用程序崩溃。

如果当接收器(sink)是文件路径( pathlib.Path )时,可以应用下列参数,同时add() 会返回与所添加的接收器相关联的标识符

参数说明
rotation分隔日志文件,何时关闭当前日志文件并启动一个新文件的条件,周期性的创建日志文件,或者按照文件大小自动分隔日志文件
例如,“500 MB”、“0.5 GB”、“1 month 2 weeks”、“10h”、“monthly”、“18:00”、“sunday”、“monday at 18:00”、“06:15”
retention (str, int, datetime.timedelta or callable, optional)可配置旧日志的最长保留时间,周期性的去清除,避免日志堆积,浪费存储空间。
例如,“1 week, 3 days”、“2 months”
compression (str or callable, optional)日志文件在关闭时应转换为的压缩或归档格式
例如,“gz”、“bz2”、“xz”、“lzma”、“tar”、“tar.gz”、“tar.bz2”、“tar.xz”、“zip”
delay (bool, optional)是否应该在配置了接收器之后立即创建文件,或者延迟到第一个记录的消息。默认为’ False '。
mode (str, optional)与内置open()函数一样的打开模式。默认为’ “a”(以附加模式打开文件)。
buffering (int, optional)内置open()函数的缓冲策略,它默认为1(行缓冲文件)。
encoding (str, optional)文件编码与内置的’ open() ‘函数相同。如果’ None ',它默认为’locale.getpreferredencoding() 。

8. 日志格式化常用的属性

KeyDescription
elapsed从程序开始经过的时间差
exception格式化异常(如果有),否则为’ None ’
extra用户绑定的属性字典(参见bind())
file进行日志记录调用的文件
function进行日志记录调用的函数
level用于记录消息的严重程度
line源代码中的行号
message记录的消息(尚未格式化)
module进行日志记录调用的模块
name进行日志记录调用的__name__
process进行日志记录调用的进程名
thread进行日志记录调用的线程名
time发出日志调用时的可感知的本地时间

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...