PaiGram/logger.py
洛水.山岭居室 760ea19c76 Initial commit
2022-04-14 15:18:45 +08:00

76 lines
2.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import logging
from logging.handlers import RotatingFileHandler # 按文件大小滚动备份
import colorlog # 控制台日志输入颜色
import os
cur_path = os.path.realpath(os.getcwd()) # log_path是存放日志的路径
log_path = os.path.join(cur_path, 'logs')
if not os.path.exists(log_path):
os.mkdir(log_path) # 如果不存在这个logs文件夹就自动创建一个
logName = os.path.join(log_path, 'log.log') # 文件的命名
log_colors_config = {
'DEBUG': 'cyan',
'INFO': 'green',
'WARNING': 'yellow',
'ERROR': 'red',
'CRITICAL': 'red',
}
class Logger:
def __init__(self):
self.logName = logName
self.logger = logging.getLogger()
self.logger.setLevel(logging.INFO)
# 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)
self.formatter = colorlog.ColoredFormatter(
'%(log_color)s[%(asctime)s] [%(levelname)s] - %(message)s', log_colors=log_colors_config)
self.formatter2 = colorlog.ColoredFormatter(
'[%(asctime)s] [%(levelname)s] - %(message)s')
def getLogger(self):
return self.logger
def __console(self, level, message, exc_info=None):
# 创建一个FileHandler用于写到本地
fh = RotatingFileHandler(filename=self.logName, maxBytes=1024 * 1024 * 5, backupCount=5,
encoding='utf-8') # 使用RotatingFileHandler类滚动备份日志
fh.setLevel(logging.INFO)
fh.setFormatter(self.formatter2)
self.logger.addHandler(fh)
ch = colorlog.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(self.formatter)
self.logger.addHandler(ch)
if level == 'info':
self.logger.info(msg=message, exc_info=exc_info)
elif level == 'debug':
self.logger.debug(msg=message, exc_info=exc_info)
elif level == 'warning':
self.logger.warning(msg=message, exc_info=exc_info)
elif level == 'error':
self.logger.error(msg=message, exc_info=exc_info)
# 这两行代码是为了避免日志输出重复问题
self.logger.removeHandler(ch)
self.logger.removeHandler(fh)
fh.close() # 关闭打开的文件
def debug(self, msg, exc_info=None):
self.__console('debug', msg, exc_info)
def info(self, msg, exc_info=None):
self.__console('info', msg, exc_info)
def warning(self, msg, exc_info=None):
self.__console('warning', msg, exc_info)
def error(self, msg, exc_info=None):
self.__console('error', msg, exc_info)
Log = Logger()