打印log

import logging
import colorlog # 控制台日志输入颜色
import datetime
from logging.handlers import RotatingFileHandler
import os
import time

from public.helper import *

日志等级颜色

log_colors_config = {
"DEBUG": "cyan",
"INFO": "green",
"WARNING": "yellow",
"ERROR": "red",
"CRITICAL": "red",
}

class Log:
def init(self):
# log_path = os.path.abspath(os.path.dirname(file))
today = time.strftime('%Y-%m-%d', time.localtime(time.time()))
self.logName = today + ".log"
print(self.logName)
self.logger = logging.getLogger()
self.logger.setLevel(logging.DEBUG)
self.formatter = colorlog.ColoredFormatter(
"%(log_color)s[%(asctime)s] [%(filename)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s",
log_colors=log_colors_config) # 日志输出格式

def __console(self, level, message):
    # 创建一个FileHandler,用于写到本地
    fh = RotatingFileHandler(filename=self.logName, mode="a", maxBytes=1024 * 1024 * 10, backupCount=10,
                             encoding="utf-8")  # 使用RotatingFileHandler类,滚动备份日志
    fh.setLevel(logging.DEBUG)
    fh.setFormatter(self.formatter)
    self.logger.addHandler(fh)

    # 创建一个StreamHandler,用于输出到控制台
    ch = colorlog.StreamHandler()
    ch.setLevel(logging.DEBUG)
    ch.setFormatter(self.formatter)
    self.logger.addHandler(ch)

    if level == "info":
        self.logger.info(message)
    elif level == "debug":
        self.logger.debug(message)
    elif level == "warning":
        self.logger.warning(message)
    elif level == "error":
        self.logger.error(message)
    # 这两行代码是为了避免日志输出重复问题
    self.logger.removeHandler(ch)
    self.logger.removeHandler(fh)
    fh.close()  # 关闭打开的文件

def debug(self, message):
    self.__console("debug", message)

def info(self, message):
    self.__console("info", message)

def warning(self, message):
    self.__console("warning", message)

def error(self, message):
    self.__console("error", message)

if name == "main":
log = Log()
log.debug("---测试开始----")
log.info("操作步骤")
log.warning("""测试警告""")
log.error("----测试错误----")

posted @ 2020-10-28 15:04  博古冠今  阅读(86)  评论(0)    收藏  举报