from loguru import logger
logger.add(time.strftime(f'./log/device_set_log_%Y%m%d.log'))
Level Name | Severty Value | Logger Method |
---|---|---|
TRACE | 5 | logger.trace() |
DEBUG | 10 | logger.debug() |
INFO | 20 | logger.info() |
SUCCESS | 25 | logger.success() |
WARING | 30 | logger.waring() |
ERROR | 40 | logger.error() |
CRITICAL | 50 | logger.critical() |
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 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
保留 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))
支持的压缩格式:gz、bz2、xz、lzma、tar、tar.gz、tar.bz2、tar.xz
logger.add('runtime_{time}.log', compression='zip')
logger 默认采用 sys.stderr 标准错误输出将日志输出到控制台中
移除已有的日志处理对象 logger.remove(handler_id=None)
参数 | 说明 |
---|---|
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() 。 |
Key | Description |
---|---|
elapsed | 从程序开始经过的时间差 |
exception | 格式化异常(如果有),否则为’ None ’ |
extra | 用户绑定的属性字典(参见bind()) |
file | 进行日志记录调用的文件 |
function | 进行日志记录调用的函数 |
level | 用于记录消息的严重程度 |
line | 源代码中的行号 |
message | 记录的消息(尚未格式化) |
module | 进行日志记录调用的模块 |
name | 进行日志记录调用的__name__ |
process | 进行日志记录调用的进程名 |
thread | 进行日志记录调用的线程名 |
time | 发出日志调用时的可感知的本地时间 |