本帖最后由 redballoon 于 2024-1-23 02:49 编辑
loguru 更简单的python日志库
去看了官方文档,没多久就看不下去了,直接问GPT给出使用模板,在进行微改后更符合我的使用习惯。😀
以下是完整的函数方法,拿来即用。
代码
# -*- coding: utf-8 -*-
"""
@ 😀Author : 🎈
@ ⏲️Time : 2024年01月22
@ 📄File : demo2.py
@ ℹ️Description:
"""
import sys
from loguru import logger
from pathlib import Path
def configure_logger():
# 确保日志目录存在
log_directory = "logs"
filename = f'{Path(__file__).stem}-script.log'
Path(log_directory).mkdir(parents=True, exist_ok=True)
custom_format = "<green>{time:YYYY-MM-DD HH:mm:ss}</green> | " \
"<level>{level: <8}</level> | " \
"<level>{thread.name: <10}</level> | " \
"<cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - " \
"<level>{message}</level>"
logger.add(
sink=(Path(log_directory) / filename), # 日志文件路径 文件类对象、字符串、pathlib.Path、可调用对象、协程函数或logging.Handler)- 负责接收格式化的日志消息并将其传播到适当终点的对象。
enqueue=True, # 是否应将待记录的消息先通过一个多进程安全队列,然后再传递到sink。在通过多个进程记录到文件时,这很有用。这还具有使日志调用非阻塞的优点。
level="INFO", # 从中将日志消息发送到sink的最低严重级别。
rotation="15 MB", # 自动轮转过大的文件
retention="2 days", # 一段时间后进行清理
encoding="utf-8",
backtrace=True, # 是否应扩展异常跟踪格式,以显示生成错误的完整堆栈跟踪,在DEBUG等级下,通常不建议打开backtrace, 可以减少生产环境下的性能开销
diagnose=True, # 是否应显示异常跟踪的变量值,以便于调试。在生产环境中应将其设置为False,以避免泄漏敏感数据。
compression="zip",
# format:(str或可调用对象,可选)- 用于在发送到sink之前格式化日志消息的模板。
format=custom_format,
# serialize:(bool,可选)- 是否在发送到sink之前首先将日志消息及其记录转换为JSON字符串。
)
# 移除默认的控制台输出
logger.remove()
# 如果想改变默认的控制台输出格式,添加新的sink
logger.add(
sink=sys.stderr, # 使用标准错误输出(stderr)为例,您也可以选择标准输出(sys.stdout)
format=custom_format, # 可以单独为控制台输出设置自定义样式
level="DEBUG"
)
if __name__ == '__main__':
configure_logger()
# 使用logger
logger.debug("这是一个debug信息")
logger.info("这是一条信息")
logger.warning("这是一个警告")
logger.error("这是一个错误")
logger.critical("这是一个严重错误")
从代码上看确实比logging更简单。😁
|