• loguru 由简入繁


    loguru 日志管理模块

    1. 基础使用:

    from loguru import logger
    
    logger.add(time.strftime(f'./log/device_set_log_%Y%m%d.log'))
    
    • 1
    • 2
    • 3

    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
    
    • 1
    • 根据时间分割日志
    logger.add("file_2.log", rotation="12:00")  # New file is created each day at noon
    
    logger.add("/data/log/demo/demo.{time:YYYY-MM-DD}.log", rotation="12:00")  # New file is created each day at noon
    
    logger.add("file_3.log", rotation="1 week")  # Once the file is too old, it's rotated
    
    logger.add("file_X.log", retention="10 days")  # Cleanup after some time
    
    logger.add("file_Y.log", compression="zip")  # Save some loved space
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    4. 日志保存时长

    保留 15 天

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

    保留 15 个

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

    保留 15 个小时

    import datetime
    from loguru import logger
    
    logger.add('runtime_{time}.log', retention=datetime.timedelta(hours=5))
    
    • 1
    • 2
    • 3
    • 4

    5. 日志压缩

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

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

    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发出日志调用时的可感知的本地时间
  • 相关阅读:
    出详图和工程图(下)-SOLIDWORKS 2024新功能
    SpringBoot 全局异常处理
    箱形理论在交易策略中的实战应用与优化
    Linux内核7. 内存管理
    怎么选择俄罗斯服务器?要注意什么?
    Maven基础
    SAP 电商云 Spartacus UI External Route 的模块实现概述
    JavaFx 实现水平滚动文本(跑马灯效果)
    Vue开发的请求
    JAVA毕业设计河南口腔医疗机构线上服务系统计算机源码+lw文档+系统+调试部署+数据库
  • 原文地址:https://blog.csdn.net/qq_17328759/article/details/127978091