Python项目日志使用记录(loguru)

Python项目日志使用记录(loguru)

效果如下
在这里插入图片描述

封装如下

  • 实现多文件记录
  • 支持每天新建文件目录(年-月-日)
import os
import datetime
from loguru import logger
from config import BASE_DIR


class Logings:
    __logger = dict()

    def __init__(self, file_name='info'):
		self.file_name = file_name
        if Logings.__logger.__contains__(file_name):
            self.logger = Logings.__logger[file_name][1]
            return
        
        date = datetime.datetime.now().strftime('%Y-%m-%d')
        self.__add_logger(date)

    # def __new__(cls, *args, **kwargs):
    #     if not cls.__instance:
    #         cls.__instance = super(Logings, cls).__new__(cls, *args, **kwargs)
    #     return cls.__instance

    def __add_logger(self, date):
        # 文件名称,按天创建 项目路径下创建logs/{date} 目录保存日志文件
        logpath = f'{BASE_DIR}/logs/{date}'
        # 判断目录是否存在,不存在则创建新的目录
        if not os.path.isdir(logpath): os.makedirs(logpath)
        handler_id =logger.add(f'{logpath}/{self.file_name}.log',  # 指定文件
                                format="{time}  | {level}| {message}",
                                # format="{time:YYYY-MM-DD HH:mm:ss}  | {level}> {elapsed}  | {message}",
                                encoding='utf-8',
                                retention='7 days',  # 设置历史保留时长
                                backtrace=True,  # 回溯
                                diagnose=True,  # 诊断
                                enqueue=True,  # 异步写入
                                rotation="1024kb",  # rotation="5kb"  # 切割,设置文件大小,rotation="12:00" 
                                filter=lambda record: record["extra"].get("name") == self.file_name  # 过滤模块
                                # compression="zip"   # 文件压缩
                                )
        self.logger = logger.bind(name=self.file_name)
        Logings.__logger[self.file_name] = (handler_id, self.logger, date)

    def __check_update_handler(self):
        if Logings.__logger.__contains__(self.file_name):
            date = datetime.datetime.now().strftime('%Y-%m-%d')
            if date > Logings.__logger[self.file_name][2]:
                logger.remove(Logings.__logger[self.file_name][0])
                self.__add_logger(date)

    def info(self, msg, *args, **kwargs):
        self.__check_update_handler()
        return self.logger.info(msg, *args, **kwargs)

    def debug(self, msg, *args, **kwargs):
        self.__check_update_handler()
        return self.logger.debug(msg, *args, **kwargs)

    def warning(self, msg, *args, **kwargs):
        self.__check_update_handler()
        return self.logger.warning(msg, *args, **kwargs)

    def error(self, msg, *args, **kwargs):
        self.__check_update_handler()
        return self.logger.error(msg, *args, **kwargs)

    def exception(self, msg, *args, exc_info=True, **kwargs):
        self.__check_update_handler()
        return self.logger.exception(msg, *args, exc_info=True, **kwargs)


info_log = Logings()
error_log = Logings('error')
req_log = Logings('request')

指定模块记录
  • 实例化Logings
    • 示例:
class TaskDispatch(object):

    sc_type = None
    req_data = dict()
    req_header = None
	logger = None


    def __init__(self, **kwargs):
        self.logger = Logings(self.__class__.__name__)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Python Loguru 是一个易于使用日志库,它提供了简洁的语法和强大的功能,可以帮助开发者在应用程序中记录和管理日志Loguru 具有以下特点: 1. 简洁的语法:Loguru 提供了简单直观的 API,使得记录日志变得轻而易举。开发者可以使用类似于 print 函数的语法来记录日志,而无需担心繁琐的配置。 2. 强大的功能:Loguru 支持将日志输出到控制台、文件、网络和其他自定义目标。开发者可以根据自己的需求配置不同的输出方式和格式。 3. 自动回滚:Loguru 具备自动回滚功能,可以根据配置的大小或时间进行日志文件的分割和归档,避免日志文件过大或过长。 4. 异常追踪:Loguru 提供了异常追踪功能,可以方便地记录和追踪应用程序中的异常信息,帮助开发者快速定位和修复问题。 5. 上下文管理:Loguru 支持上下文管理,可以在日志中添加上下文信息,如请求 ID、用户 ID 等,方便开发者跟踪和调试应用程序。 使用 Loguru 非常简单,只需要在代码中导入 loguru 模块,并使用 loguru.logloguru.logger 对象来记录日志即可。 下面是一个使用 Loguru 记录日志的示例: ```python import loguru loguru.logger.add("file.log") # 将日志输出到文件 loguru.logger.info("This is an info message") # 记录一条信息日志 loguru.logger.warning("This is a warning message") # 记录一条警告日志 loguru.logger.error("This is an error message") # 记录一条错误日志 ``` 以上是 Loguru 的一些基本用法,你还可以通过配置文件或函数参数来自定义日志记录的行为。详细的用法和更多功能请参考 Loguru 官方文档。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值