logging日志封装

# _*_ coding:utf-8 _*_
# @Time      : 2019/9/25 
# @Author    :Chen
# @Email     :xxxx@163.com
# @          :my_logging_class.py
# @          :PyCharm
import logging
import os
import time


class MyLogging:
    """这是一个日志收集器"""
    def __init__(self, log_name, file_path, log_grade="DEBUG", output_grade="DEBUG", output="0"):
        """封装一个日志类
        :param log_name:  日志收集器名字
        :param file_path: 日志存放路径+日志名
        :param log_grade: 定义log日志级别信息
        :param output_grade: 读取输出渠道级别信息
        :param output: 输出渠道
        """
        self.LOG_NAME = log_name
        self.file_name = file_path  
        self.LOG_GRADE = log_grade  
        self.OUTPUT_GRADE = output_grade 
        self.OUTPUT = output  

        self.my_log = logging.getLogger(self.LOG_NAME)  # 定义一个日收集器
        # self.my_log = logging.Logger()  # 定义一个日收集器
        try:
            self.my_log.setLevel(self.LOG_GRADE)  # 设置级别
        except ValueError as e:
            print(f"日志收集器级别设置错误:{e}")

        self.formatter = logging.Formatter("[%(asctime)s]-[%(name)s]-[%(levelname)s]-[日志信息]:%(message)s")

    def file_handle(self):
        """设置文件输出渠道方法"""
        self.fh = logging.FileHandler(self.file_name, encoding="utf-8")  # 文件渠道
        try:
            self.fh.setLevel(self.OUTPUT_GRADE)  # 输出到文件的级别
        except ValueError as e:
            print(f"文件渠道级别设置错误:{e}")
        self.fh.setFormatter(self.formatter)  # 设置输出日志格式
        self.my_log.addHandler(self.fh)  # 添加文件渠道

    def stream_handler(self):
        """设置控制台输出渠道方法"""
        self.ch = logging.StreamHandler()  # 控制台渠道
        try:
            self.ch.setLevel(self.OUTPUT_GRADE)  # 输出到控制台的级别
        except ValueError as e:
            print(f"文件渠道级别设置错误:{e}")
        self.ch.setFormatter(self.formatter)  # 设置输出日志格式
        self.my_log.addHandler(self.ch)  # 添加控制台渠道

    def print_log(self, grade, msg):
        """@grade:日志信息的级别
        @msg:日志的输出信息
        """
        if str(self.OUTPUT) == "0":  # 选择输出渠道self.OUTPUT=0为文件渠道,self.OUTPUT=1为控制台渠道
            self.file_handle()
        elif self.OUTPUT == "1":
            self.stream_handler()

        #  选择grade
        if grade == "DEBUG":
            self.my_log.debug(msg)
        elif grade == "INFO":
            self.my_log.info(msg)
        elif grade == "WARNING":
            self.my_log.warning(msg)
        elif grade == "ERROR":
            self.my_log.error(msg)
        elif grade == "CRITICAL":
            self.my_log.critical(msg)
        else:
            print("日志信息级别错误")

        if self.OUTPUT == "0":
            self.my_log.removeHandler(self.fh)  # 清除文件渠道信息
        elif self.OUTPUT == "1":
            self.my_log.removeHandler(self.ch)  # 清除控制台渠道信息

    def debug(self, msg):
        self.print_log("DEBUG", msg)

    def info(self, msg):
        self.print_log("INFO", msg)

    def warning(self, msg):
        self.print_log("WARNING", msg)

    def error(self, msg):
        self.print_log("ERROR", msg)

    def critical(self, msg):
        self.print_log("CRITICAL", msg)


log = MyLogging("chen", "debug.log", "DEBUG", "DEBUG", "1")


if __name__ == "__main__":

    log.debug("最详细的日志信息")
    log.info("输出一个异常信息")
    log.error("输出一个错误信息")
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值