吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 834|回复: 9
收起左侧

[学习记录] loguru更优雅的python日志库

[复制链接]
redballoon 发表于 2024-1-22 20:40
本帖最后由 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更简单。😁

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
嘚瑟挨顿揍 + 1 + 1 谢谢@Thanks!
mainblog + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

少微星 发表于 2024-1-22 22:10
老哥,用的文档注释插件是啥
 楼主| redballoon 发表于 2024-1-22 22:37
alongzhenggang 发表于 2024-1-23 00:22
wapjsx 发表于 2024-1-23 08:30
感觉确实不错的样子,但我不会使用。

平时都是 print()完事。
zhbing 发表于 2024-1-23 08:35
一直都是用这个库打印日志,非常顺手
Vvvvvoid 发表于 2024-1-23 09:21
输出的日志长啥样, 也贴出来啊
Looco 发表于 2024-1-23 10:12
Vvvvvoid 发表于 2024-1-23 09:21
输出的日志长啥样, 也贴出来啊

长这样
少微星 发表于 2024-1-23 13:23
redballoon 发表于 2024-1-22 22:37
啥插件,没懂你意思

Y`H7B4)4(1[Z[@TSLVDH@$E.png
这个
 楼主| redballoon 发表于 2024-1-23 13:37
本帖最后由 redballoon 于 2024-1-23 13:39 编辑

哦,这个不是用插件的,是在pycharm中自定义的
image-20240123133836907.png
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 17:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表