0
点赞
收藏
分享

微信扫一扫

loguru自定义Python的日志输出

Greatiga 2024-06-01 阅读 23

一、前言

前面我使用Python制作了几款小工具,有时会有同学向我反馈一些问题,遇到代码问题的话排查起来很麻烦,需要在Pycharm中运行源代码复现当时的情况,那么有什么办法能够提高问题排查的效率呢?

当然是有的。小工具当中都只是简单的几个功能性py文件,并未包含日志记录的功能,若是在运行时记录下关键的信息,那排查问题的效率便会大幅提高

本文主要介绍使用loguru记录日志并自定义日志的输出格式

二、loguru简介

loguru是一个用于Python的高性能、简洁且灵活的日志库。它的目标是提供一种简单的方式来记录应用程序的运行情况,可以帮助开发人员快速地记录应用程序的运行情况,并且方便地进行调试和监控

那么先来安装:

pip install loguru

三、自定义封装

为使得输出的日志更加美观,这里做了简单的封装

创建logger,重置默认的输出格式,再添加格式format参数即可,具体格式参数参考官方文档

import os.path
import sys
from loguru import logger


def uru_log(log_file_prefix):
    # 创建logger
    logging = logger
    # 清空设置
    logging.remove()
    # 日志文件夹路径不存在则创建
    loguru_dir_path = os.path.dirname(os.path.abspath(__file__)) + os.sep + "uru_logs" + os.sep
    if not os.path.exists(loguru_dir_path):
        os.makedirs(loguru_dir_path)
    log_file_path = loguru_dir_path + os.sep + "%s_{time}.log" % log_file_prefix
    # 日志输出到文件
    logging.add(log_file_path,
                format='[{time:YYYY-MM-DD HH:mm:ss,SSS}] '  # 时间
                       '{module}.{function} - {line} - {level} - {message}',  # 模块.方法-行号-级别-内容
                retention='720h',  # 30天清理一次日志
                rotation='00:00'  # 每天0点生成新日志文件
                )
    return logging

使用示例代码:

log = uru_log('uru_log')


def test_fun(value):
    # case1
    log.info('case1完成!')
    # case2
    try:
        new_value = int(value)
        log.info(f'case2执行成功: {type(new_value)}')
    except ValueError:
        log.exception(f'case2执行失败:')


if __name__ == "__main__":
    test_fun('123')
    test_fun('1.23')

运行效果:

loguru自定义Python的日志输出_Python

若要使代码运行时将日志输出到控制台,添加以下代码即可:

# 日志打印到控制台
logging.add(sys.stdout,
            format="[<green>{time:YYYY-MM-DD HH:mm:ss,SSS}</green>] "  # 时间
                   "<blue>{module}</blue>.<blue>{function}</blue> - "  # 模块.方法
                   "<cyan>{line}</cyan> - "  # 代码行号
                   "<level>{level}</level> - "  # 日志等级
                   "<level>{message}</level>",  # 日志内容
            )

运行效果:

loguru自定义Python的日志输出_Python_02


举报

相关推荐

0 条评论