接口之日志封装

最近框架封装完成后,介入日志的封装

先看一下整个封装的代码(红色是易错点):

思路:1.创建日志对象 2.给对象设置全局的日志级别 3.创建文件日志路径 4.创建日志的控制器,把日志路径传入 5.设置日志的级别 6设置控制器输出格式 7.把控制器加入到日志对象 8.返回

import logging
import time

from commons.yaml_util import get_object_path, read_config_yaml


class LoggerUtil:

    def create_log(self,logger_name='log'):
        #创建一个日志对象
        self.logger =  logging.getLogger(logger_name)
        #设置全局的日志级别(从低到高:debug调试<info信息<warning警告<error错误<critical严重)
        self.logger.setLevel(logging.DEBUG)

        #去除重复的日志
        if not self.logger.handlers:
            #----------文件日志----------
            #1.创建文件日志路径(一定要到文件扩展名,/logs/这个斜杠不能省略,不然就成了文件名称)
            self.file_log_path = get_object_path()+"/logs/"+read_config_yaml("log","log_name")+str(int(time.time()))+".log"
            #2.创建文件日志的控制器
            self.file_hander = logging.FileHandler(self.file_log_path,encoding='utf-8')
            #3.设置文件日志的日志级别
            file_log_level = str(read_config_yaml("log","log_level")).lower() #当前main方法调用要小心一点,read_config_yaml的方法获取路径是在当前项目下操作
            if file_log_level=="debug":
                self.file_hander.setLevel(logging.DEBUG)
            elif file_log_level=="info":
                self.file_hander.setLevel(logging.INFO)
            elif file_log_level=="warning":
                self.file_hander.setLevel(logging.WARNING)
            elif file_log_level=="error":
                self.file_hander.setLevel(logging.ERROR)
            elif file_log_level=="critical":
                self.file_hander.setLevel(logging.CRITICAL)
            else:
                self.file_hander.setLevel(logging.DEBUG)
            #4.创建文件日志的格式
            self.file_hander.setFormatter(logging.Formatter(read_config_yaml("log","log_format")))
            #将文件日志的控制器加入到日志对象
            self.logger.addHandler(self.file_hander)

            #----------控制台日志----------
            #1.创建控制台日志的控制器
            self.console_hander = logging.StreamHandler()
            #2.设置控制台日志的日志级别
            console_log_level = str(read_config_yaml("log", "log_level")).lower()
            if console_log_level == "debug":
                self.console_hander.setLevel(logging.DEBUG)
            elif console_log_level == "info":
                self.console_hander.setLevel(logging.INFO)
            elif console_log_level == "warning":
                self.console_hander.setLevel(logging.WARNING)
            elif console_log_level == "error":
                self.console_hander.setLevel(logging.ERROR)
            elif console_log_level == "critical":
                self.console_hander.setLevel(logging.CRITICAL)
            else:
                self.console_hander.setLevel(logging.DEBUG)
            #3.创建控制台日志的格式
            self.console_hander.setFormatter(logging.Formatter(read_config_yaml("log", "log_format")))
            #将控制台日志的控制器加入到日志对象
            self.logger.addHandler(self.console_hander)

        #返回包含有文件日志控制器和控制台日志控制器的日志对象
        return self.logger

#错误日志的输出
def error_log(message):
    LoggerUtil().create_log().error(message)
    #raise Exception(message)

#信息日志的输出
def logs(message):
    LoggerUtil().create_log().info(message)

if __name__ == '__main__':
    error_log("qqq")
    logs("www")

  每篇一句:

  心里的念头一旦发芽,就已经控制不住了。

posted on 2021-12-28 17:04  Titen  阅读(113)  评论(0编辑  收藏  举报

导航