栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python之logging库工具类封装

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python之logging库工具类封装

需求:如何让工具类感知到日志路径?

优化功能:

  • 将可变的配置项单独放置在配置包config-->settings文件中;
  • 日志文件存放log包下【如果没有需要提前新建】,并且日志文件是按照日期来命名每天的日志单独存放;

日志格式:

2022-07-13 22:35:11,256 - log_utils.py[line:51] - DEBUG: BUG
2022-07-13 22:35:11,256 - log_utils.py[line:52] - ERROR: 错误

config-settings.py 文件内容加入

import os

def get_log_path():
    project_path = os.path.dirname(os.path.dirname(__file__))
    log_path = project_path + os.sep + "log"
    return log_path
utils包下logutil.py参考如下
import os
import logging
import time
from config.settings import get_log_path


class LogUtil(object):
    def __init__(self):
        # 创建 logger 对象
        self.__logger = logging.getLogger("logger")
        # 设置日志输出等级总开关
        self.__logger.setLevel(logging.DEBUG)
        # 避免日志重复
        if not self.__logger.handlers:
            # 创建控制台实例
            sh = logging.StreamHandler()
            '''
            创建一个文件实例,如果文件不存在,就会自动创建;
            mode 参数设置为追加;另外为防止乱码, encoding 参数设置为 utf-8 编码格式
            '''
            # 定义日志名称
            self.log_name = '{}.log'.format(time.strftime("%Y-%m-%d", time.localtime()))
            # 定义日志路径及文件名称
            self.log_path_name = os.path.join(get_log_path(), self.log_name)
            fh1 = logging.FileHandler(self.log_path_name, mode='a', encoding='utf-8')
            # 设置控制台输出的日志级别
            sh.setLevel(logging.DEBUG)
            # 设置向文件输出的日志级别
            fh1.setLevel(logging.DEBUG)
            # 统一设置日志的输出格式
            formatter = logging.Formatter('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
            # 设置向控制台输出的日志格式
            sh.setFormatter(formatter)
            # 设置向文件输出的日志格式
            fh1.setFormatter(formatter)
            # 加载控制台实例到 logger 对象中
            self.__logger.addHandler(sh)
            sh.close()
            # 加载文件实例到 logger 对象中
            self.__logger.addHandler(fh1)
            fh1.close()

    def getLogger(self):
        return self.__logger


if __name__ == '__main__':
    logger = LogUtil().getLogger()
    logger.debug('BUG')
    logger.error('错误')

其余参考之前一篇博客:python中logging库使用总结_小杜℃的博客-CSDN博客_logging 库

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011928.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号