import os
import re
import time
import logging
import logging.handlers
logging.getLogger("requests").setLevel(logging.WARNING)
logging.getLogger("elasticsearch").setLevel(logging.WARNING)
class Logs(object):
def __init__(self, logger_name=__name__, logs_dir=None, file_name=None, *args, **kwargs):
self.logger = logging.getLogger(logger_name)
self.logger_level = 'INFO' if 'logger_level' not in kwargs else kwargs['logger_level']
self.console_handler_level = 'ERROR' if 'console_handler_level' not in kwargs else kwargs['console_handler_level']
self.file_handler_level = 'INFO' if 'file_handler_level' not in kwargs else kwargs['file_handler_level']
# 设置输出的等级
LEVELS = {'NOTSET': logging.NOTSET,
'DEBUG': logging.DEBUG,
'INFO': logging.INFO,
'WARNING': logging.WARNING,
'ERROR': logging.ERROR,
'CRITICAL': logging.CRITICAL}
# 创建文件目录
if not logs_dir:
logs_dir= os.path.dirname(os.path.abspath(__file__)) + os.path.sep + "logs"
if os.path.exists(logs_dir) and os.path.isdir(logs_dir):
pass
else:
os.makedirs(logs_dir)
timestamp = time.strftime("%Y-%m-%d", time.localtime())
if file_name:
log_file_name = f'{file_name}_{timestamp}.log'
else:
log_file_name = f"{timestamp}.log"
log_file_path=os.path.join(logs_dir, log_file_name)
rotating_fileHandler = logging.handlers.TimedRotatingFileHandler(
filename=log_file_path, when="D", interval=1, backupCount=1, encoding="utf-8"
)
rotating_fileHandler.suffix = "%Y-%m-%d.log"
rotating_fileHandler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.log$")
# rotating_fileHandler = logging.handlers.RotatingFileHandler(filename=log_file_path,
# maxBytes=1024 * 1024 * 50,
# backupCount=5,
# encoding="utf8")
# 设置输出格式
formatter = logging.Formatter("[%(asctime)s] [%(levelname)s] %(message)s", "%Y-%m-%d %H:%M:%S")
rotating_fileHandler.setLevel(LEVELS[self.file_handler_level])
rotating_fileHandler.setFormatter(formatter)
# 控制台句柄
console_handler = logging.StreamHandler()
console_handler.setLevel(LEVELS[self.console_handler_level])
console_handler.setFormatter(formatter)
# 添加内容到日志句柄中
self.logger.addHandler(rotating_fileHandler)
self.logger.addHandler(console_handler)
self.logger.setLevel(LEVELS[self.logger_level])
# @property
# def get_logger(self):
# return self.logger
# def debug(self, message):
# self.logger.debug(message)
# def info(self, message):
# self.logger.info(message)
# def warning(self, message):
# self.logger.warning(message)
# def error(self, message):
# self.logger.error(message)
if __name__ == '__main__':
pass
0 评论
大哥整点话呗~