current position:Home>loguru from simple to complex

loguru from simple to complex

2022-11-24 22:59:17Qredsun

loguru 日志管理模块

1. 基础使用:

from loguru import logger

logger.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. 分割日志

  • Split logs based on size
logger.add("file_1.log", rotation="500 MB")    # Automatically rotate too big file
  • Split logs based on time
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

4. 日志保存时长

保留 15 天

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

保留 15 个

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

保留 15 个小时

import datetime
from loguru import logger

logger.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 标准错误输出将日志输出到控制台中

  Remove an existing log handler object 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分隔日志文件,何时关闭当前日志文件并启动一个新文件的条件,Periodically create log files,或者按照文件大小自动分隔日志文件
例如,“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)可配置旧日志的最长保留时间,Periodic de-purging,避免日志堆积,浪费存储空间.
例如,“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. Common attributes for log formatting

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

copyright notice
author[Qredsun],Please bring the original link to reprint, thank you.
https://en.chowdera.com/2022/328/202211242246156075.html

Random recommended