log技术_类继承封装

1、日志级别

debug:最细微的信息记录,这个级别就是用来debug的,看程序在哪一次迭代中发生了错误,比如每次循环都输出一些东西用debug级别。
info:用于routines,也就是输出start finish 状态改变等信息。
warn:输出一些相对重要,但是不是程序bug的信息,比如输入了错误的密码,或者连接较慢。
error:输出程序bug,打印异常信息。
critical:用于处理一些非常糟糕的事情,比如内存溢出、磁盘已满,这个一般较少使用。

2、代码

import logging
from logging.handlers import RotatingFileHandler
import datetime

print(datetime.datetime.now().strftime('%Y_%m_%d_%H_%M_%S'))

STYLE = {
        'fore':
        {   # 前景色
            'black'    : 30,   #  黑色
            'red'      : 31,   #  红色
            'green'    : 32,   #  绿色
            'yellow'   : 33,   #  黄色
            'blue'     : 34,   #  蓝色
            'purple'   : 35,   #  紫红色
            'cyan'     : 36,   #  青蓝色
            'white'    : 37,   #  白色
        },

        'back':
        {   # 背景
            'black'     : 40,  #  黑色
            'red'       : 41,  #  红色
            'green'     : 42,  #  绿色
            'yellow'    : 43,  #  黄色
            'blue'      : 44,  #  蓝色
            'purple'    : 45,  #  紫红色
            'cyan'      : 46,  #  青蓝色
            'white'     : 47,  #  白色
        },

        'mode':
        {   # 显示模式
            'mormal'    : 0,   #  终端默认设置
            'bold'      : 1,   #  高亮显示
            'underline' : 4,   #  使用下划线
            'blink'     : 5,   #  闪烁
            'invert'    : 7,   #  反白显示
            'hide'      : 8,   #  不可见
        },

        'default':
        {
            'end' : 0,
        },
}


def UseStyle(string, mode='', fore='', back=''):
    mode = '%s' % STYLE['mode'][mode] if STYLE['mode'].get(mode) else ''
    fore = '%s' % STYLE['fore'][fore] if STYLE['fore'].get(fore) else ''
    back = '%s' % STYLE['back'][back] if STYLE['back'].get(back) else ''
    style = ';'.join([s for s in [mode, fore, back] if s])
    style = '\033[%sm' % style if style else ''
    end = '\033[%sm' % STYLE['default']['end'] if style else ''
    return '%s%s%s' % (style, string, end)


class Logger:
    def __init__(self, inLevel='DEBUG', inName=__name__):
        self.logger = logging.getLogger(inName)
        self.logger.setLevel(inLevel)
        self.formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

    def addHand(self, source):
        self.logger.addHandler(source)

    def debug(self, msg):
        self.logger.debug(msg)

    def info(self, msg):
        self.logger.info(msg)

    def warning(self, msg):
        self.logger.warning(msg)

    def error(self, msg):
        self.logger.error(msg)#

    def critical(self, msg):
        self.logger.critical(msg)

class FileLogger(Logger):
    """
    log文件输出类
    """

    def __init__(self, logName):
        Logger.__init__(self, inLevel='DEBUG', inName=__name__)
        self.loggerName = logName
        self.rHandler = RotatingFileHandler("{}_{}.log".format(self.loggerName, datetime.datetime.now().strftime('%Y_%m_%d_%H_%M_%S')), maxBytes=1*1024,backupCount=3, encoding='utf-8')
        self.rHandler.setFormatter(self.formatter)
        self.addHand(self.rHandler)

class ConsoleLogger(Logger):
    """
    控制台输出日志类
    """

    def __init__(self):
        Logger.__init__(self, inLevel='DEBUG', inName=__name__)
        self.console = logging.StreamHandler()
        self.console.setFormatter(self.formatter)
        self.addHand(self.console)

    def debug(self, msg):
        # 黑色
        self.logger.debug(UseStyle(msg, fore='black'))

    def info(self, msg):
        # 蓝色
        self.logger.info(UseStyle(msg, fore='blue'))

    def warning(self, msg):
        # 黄色
        self.logger.warning(UseStyle(msg, fore='yellow'))

    def error(self, msg):
        # 红色
        self.logger.error(UseStyle(msg, fore='red'))

    def critical(self, msg):
        # 紫红色
        self.logger.critical(UseStyle(msg, fore='purple'))



log = ConsoleLogger()
# log = FileLogger('test_log')
log.debug('调试')
log.info('信息')
log.warning('警告')
log.error('错误')
log.critical('糟糕')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢同学.

但行好事 莫问前程

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值