python3封装logging

import os
import time
import __init__
import logging
from logging.handlers import TimedRotatingFileHandler

app = __init__.app
log_path = app.config.get('LOG_PATH')
if not os.path.exists(log_path):
    os.makedirs(log_path, mode=0o755, exist_ok=True)

log_file_route = log_path + '/' + str(time.strftime('%Y%m%d', time.localtime())) + '.log'


class DemoLogger:
    def __init__(self, log_grade='NOTSET'):
        # 打印日志等级以上
        self.log_grade = log_grade

        # 设置格式
        self.formatter = logging.Formatter('{"timestamp":"%(asctime)s", '
                                           '"program_route":"%(pathname)s", '
                                           '"row":"%(lineno)d", '
                                           '"level":"%(levelname)s", "message":"%(message)s"}',
                                           '%Y-%m-%d %H:%M:%S')
        # 打印到终端的格式
        self.formatter_cmd = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
                                               '%Y-%m-%d %H:%M:%S')

        # 配置保存日志到文件的日志文件信息
        self.time_rotating_handler = TimedRotatingFileHandler(log_file_route, when='d',
                                                              interval=1, backupCount=7,
                                                              encoding='utf8', delay=False)

    def custom_get_logger(self):
        # 创建一个日志器
        logger = logging.getLogger()

        # 设置日志输出的最低等级,低于当前等级则会被忽略
        logger.setLevel(self.log_grade)

        # 判断当前日志对象中是否有处理器,如果没有,则添加处理器
        if not logger.handlers:
            # 创建处理器:stream_handler为控制台处理器,time_rotating_handler为文件处理器
            stream_handler = logging.StreamHandler()

            stream_handler.setFormatter(self.formatter_cmd)
            self.time_rotating_handler.setFormatter(self.formatter)

            # 将处理器,添加至日志器中
            logger.addHandler(stream_handler)
            logger.addHandler(self.time_rotating_handler)

        return logger


if __name__ == '__main__':
    logger = DemoLogger().custom_get_logger()
    logger.error('测试')
    

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值