python可用于生产级别的日志模块

背景
生产环境中整个项目的日志信息需要每一天保存一个日志文件,日志保留的最大时间为30天。
自定义一个日志模块,代码如下:

import os, logging
from datetime import datetime
from logging import handlers


class Logger:
    """
    定义Logger类,日志模块
    """

    level_relations = {
        "debug": logging.DEBUG,
        "info": logging.INFO,
        "warning": logging.WARNING,
        "error": logging.ERROR,
        "crit": logging.CRITICAL,
    }
    log_dir = "/data/log"
    if not os.path.exists(log_dir):
        os.makedirs(log_dir, exist_ok=True)
        filepath = os.path.join(log_dir, f"xxx_business_logs_{datetime.now().strftime('%Y-%m-%d')}.log")

    def __init__(self, filename=filepath, level="info", when="D", backCount=7, fmt=None):
        # 日志保存或打印的格式
        if fmt is None:
            fmt = "%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s"

        self.logger = logging.getLogger(filename)
        if not self.logger.hasHandlers():
            format_str = logging.Formatter(fmt)
            self.logger.setLevel(self.level_relations.get(level))
            # 向控制台或终端输出
            sh = logging.StreamHandler()
            sh.setFormatter(format_str)
            # 以天为单位保存日志文件
            th = handlers.TimedRotatingFileHandler(
                filename=filename, when=when, backupCount=backCount, encoding="utf-8"
            )
            th.setFormatter(format_str)
            self.logger.addHandler(sh)
            self.logger.addHandler(th)

    # 获取日志对象
    def get_log(self):
        return self.logger


# 整个项目只需要打印一个日志文件,只需要在使用的文件中导入log,
# 调用log = log.get_log()即可使用
log = Logger()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值