python3封装日志操作

思想不在一个高度没必要相互征服,你不信佛,寺庙也从来不缺上香的人。

上一篇:python3封装图片和base64相互转换

日志方法封装,包括创建目录,日志级别分为调试日志、普通日志、警告日志、错误日志、关键日志。

#!/usr/bin/env python
# _*_ coding: utf-8 _*_
# @Time     : 2024/07/16 22:11
# @Author   : chb
# @File     : my_log.py

import logging
import os
import time

base_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

LEVELS = {
    'debug': logging.DEBUG,
    'info': logging.INFO,
    'warning': logging.WARNING,
    'error': logging.ERROR,
    'critical': logging.CRITICAL
}

logger = logging.getLogger()
level = 'default'


def create_file(file_path):
    """
    文件路径不存在先创建文件路径,文件不存在创建文件
    :param file_path: 文件绝对路径
    :return:
    """
    path = file_path[0:file_path.rfind('/')]
    if not os.path.isdir(path):
        os.makedirs(path)
    if not os.path.isfile(file_path):
        open(file_path, mode='w', encoding='utf-8').close()


class MyLog:
    log_file = base_path+'/log/log.log'
    err_file = base_path+'/log/err.log'
    logger.setLevel(LEVELS.get(level, logging.NOTSET))
    create_file(log_file)
    create_file(err_file)

    handler = logging.FileHandler(log_file, encoding='utf-8')
    err_handler = logging.FileHandler(err_file, encoding='utf-8')
    
    @classmethod
    def set_handler(cls, levels):
        if levels == 'error':
            logger.addHandler(cls.err_handler)
        logger.addHandler(cls.handler)
    
    @classmethod
    def remove_handler(cls, levels):
        if levels == 'error':
            logger.removeHandler(cls.err_handler)
        logger.removeHandler(cls.handler)

    @staticmethod
    def get_current_time():
        """
        获取当前时间,时间格式:'2020-12-12 12:12:12'
        :return:
        """
        return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))

    @classmethod
    def debug(cls, log_meg):
        """
        调试日志
        :param log_meg: 日志内容
        :return:
        """
        cls.set_handler('debug')
        logger.debug(f"{cls.get_current_time()} [DEBUG]: {log_meg}")
        cls.remove_handler('debug')

    @classmethod
    def info(cls, log_meg):
        """
        普通日志
        :param log_meg: 日志内容
        :return:
        """
        cls.set_handler('info')
        logger.info(f"{cls.get_current_time()} [INFO]: {log_meg}")
        cls.remove_handler('info')

    @classmethod
    def warning(cls, log_meg):
        """
        警告日志
        :param log_meg: 日志内容
        :return:
        """
        cls.set_handler('warning')
        logger.warning(f"{cls.get_current_time()} [WARNING]: {log_meg}")
        cls.remove_handler('warning')

    @classmethod
    def error(cls, log_meg):
        """
        错误日志
        :param log_meg: 日志内容
        :return:
        """
        cls.set_handler('error')
        logger.error(f"{cls.get_current_time()} [ERROR]: {log_meg}")
        cls.remove_handler('error')

    @classmethod
    def critical(cls, log_meg):
        """
        关键日志
        :param log_meg: 日志内容
        :return:
        """
        cls.set_handler('critical')
        logger.critical(f"{cls.get_current_time()} [CRITICAL]: {log_meg}")
        cls.remove_handler('critical')


if __name__ == "__main__":
    MyLog.debug("This is debug message")
    MyLog.info("This is info message")
    MyLog.warning("This is warning message")
    MyLog.error("This is error message")
    MyLog.critical("This is critical message")

如果感觉本文对您有帮助可以点个赞哦

本文为学习笔记,转载请标明出处

本文仅供交流学习,请勿用于非法途径

仅是个人意见,如有想法,欢迎留言

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容