打印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("----测试错误----")
浙公网安备 33010602011771号