重写logger

This commit is contained in:
MarkusJoe
2022-02-18 19:35:03 +08:00
parent 4a4b7c0010
commit 8ccff095df
2 files changed
+54 -51

No files matched your search

+29 -32
View File
@@ -15,16 +15,15 @@ from bin.utils.logger import logger
class MulThreadDownload(threading.Thread): class MulThreadDownload(threading.Thread):
"""继承threading使用多线程"""
def __init__(self, url, startpos, endpos, f, name): def __init__(self, url, startpos, endpos, f, name):
super(MulThreadDownload, self).__init__() super(MulThreadDownload, self).__init__()
self.session = requests.Session() self.session = requests.Session()
self.session.trust_env = False self.session.trust_env = False
self.url = url self.url = url # 资源Url
self.startpos = startpos self.startpos = startpos
self.endpos = endpos self.endpos = endpos
self.fd = f self.fd = f # 文件操作
self.name = name self.name = name # 线程名称
def download(self): def download(self):
""" """
@@ -48,6 +47,7 @@ class MulThreadDownload(threading.Thread):
class Check: class Check:
"""检查md5是否相同和下载数据库""" """检查md5是否相同和下载数据库"""
def __init__(self): def __init__(self):
self.assets_url = 'https://themedatabases.vercel.app/assets' self.assets_url = 'https://themedatabases.vercel.app/assets'
self.remote_md5 = 'https://themedatabases.vercel.app/md5' self.remote_md5 = 'https://themedatabases.vercel.app/md5'
@@ -67,7 +67,7 @@ class Check:
logger.info(f'远程数据库md5: {remote_md5}') logger.info(f'远程数据库md5: {remote_md5}')
if local_md5 != remote_md5: if local_md5 != remote_md5:
logger.error('下载错误: 本地数据库md5和远程数据库md5检验不通过, 即将开始重新下载\nI: 本次下载将使用单线程下载') logger.error('下载错误: 本地数据库md5和远程数据库md5检验不通过, 即将开始重新下载\nI: 本次下载将使用单线程下载')
single_download(self.assets_url) self.single_download()
else: else:
logger.info('md5检验已通过') logger.info('md5检验已通过')
@@ -106,36 +106,33 @@ class Check:
self.check_md5() self.check_md5()
def single_download(self):
def single_download(url): """
""" 单线程进行下载
单线程进行下载 :return:
:param url: """
:return: session = requests.Session()
""" session.trust_env = False
session = requests.Session() logger.info(f'正在使用单线程下载中')
session.trust_env = False resp = session.get(self.assets_url)
logger.info(f'正在使用单线程下载中') with open('./db/style.db', 'wb') as fp:
resp = session.get(url) fp.write(resp.content)
with open('./db/style.db', 'wb') as fp: logger.info('下载完成 正在检验文件md5')
fp.write(resp.content) with open('./db/style.db', 'rb') as fp:
logger.info('下载完成 正在检验文件md5') data = fp.read()
with open('./db/style.db', 'rb') as fp: local_md5 = hashlib.md5(data).hexdigest()
data = fp.read() remote_md5 = session.get('https://themedatabases.vercel.app/md5').json()['data'][0]
local_md5 = hashlib.md5(data).hexdigest() logger.info(f'本地数据库md5: {local_md5}')
remote_md5 = session.get('https://themedatabases.vercel.app/md5').json()['data'][0] logger.info(f'远程数据库md5: {remote_md5}')
logger.info(f'本地数据库md5: {local_md5}') if local_md5 != remote_md5:
logger.info(f'远程数据库md5: {remote_md5}') logger.error('md5检验未通过请手动前往 https://themedatabases.vercel.app/assets 下载文件并放入./bin/assets文件夹内')
if local_md5 != remote_md5: sys.exit(-1)
logger.error('md5检验未通过请手动前往 https://themedatabases.vercel.app/assets 下载文件并放入./bin/assets文件夹内') else:
sys.exit(-1) logger.info('md5检验已通过')
else:
logger.info('md5检验已通过')
if __name__ != '__main__': if __name__ != '__main__':
if not os.path.exists('./bin/log'): __all__ = ['b64img', 'error', 'logger', 'view']
os.mkdir('./bin/log')
if not os.path.exists('./db/style.db'): if not os.path.exists('./db/style.db'):
logger.error('没有检测到本地主题数据库即将开始下载') logger.error('没有检测到本地主题数据库即将开始下载')
Check().download() Check().download()
+25 -19
View File
@@ -8,17 +8,22 @@
import time import time
import logging.handlers import logging.handlers
from logging import Logger
from colorlog import ColoredFormatter from colorlog import ColoredFormatter
class Logger: class MakeLogger:
def __init__(self): def __init__(self):
self.date_format = '%H:%M:%S' self.date_format = '%H:%M:%S'
self.info_format_console = '%(log_color)s[%(asctime)s] |%(filename)s[%(lineno)-3s] |%(levelname)-8s |%(message)s' self.format_console = '%(log_color)s[%(asctime)s] |%(filename)s[%(lineno)-3s] |%(levelname)-8s |%(message)s'
self.info_format_file = '[%(asctime)s] |%(filename)s[%(funcName)sline:%(lineno)d] |%(levelname)-8s |%(message)s' self.format_file = '[%(asctime)s] |%(filename)s[%(funcName)sline:%(lineno)d] |%(levelname)-8s |%(message)s'
def set_logger(self): def setup_logger(self) -> Logger:
formatter = ColoredFormatter(fmt=self.info_format_console, """
建立日志器
:return:
"""
formatter = ColoredFormatter(fmt=self.format_console,
datefmt=self.date_format, datefmt=self.date_format,
reset=True, reset=True,
log_colors={ log_colors={
@@ -26,24 +31,25 @@ class Logger:
'INFO': 'light_cyan', 'INFO': 'light_cyan',
'WARNING': 'yellow', 'WARNING': 'yellow',
'ERROR': 'red', 'ERROR': 'red',
'CRITICAL': 'red,bold_red'}) 'CRITICAL': 'red,bold_red'}) # 定义终端输出颜色
formatter_file = logging.Formatter(fmt=self.info_format_file, formatter_file = logging.Formatter(fmt=self.format_file,
datefmt=self.date_format) datefmt=self.date_format) # 文件输入不使用颜色
_logger = logging.getLogger('MainLogger') _logger = logging.getLogger('RequestCounter') # 设置日志器名称
_logger.setLevel(logging.DEBUG) _logger.setLevel(logging.DEBUG) # 设置等级
ConsoleLogger = logging.StreamHandler() # 输出到终端 console_logger = logging.StreamHandler() # 输出到终端
ConsoleLogger.setFormatter(formatter) console_logger.setFormatter(formatter) # 设置输出格式化
log_name = time.strftime('%Y-%m-%d %H') # 一小时内使用的日志文件都是同一个 log_name = time.strftime('%Y-%m-%d %H') # 一小时内使用的日志文件都是同一个
FileLogger = logging.handlers.RotatingFileHandler(filename=f'./bin/log/{log_name}.log', file_logger = logging.handlers.RotatingFileHandler(filename=f'./bin/log/{log_name}.log',
maxBytes=102400, maxBytes=102400,
backupCount=5) # 每个日志文件最大102400字节(100Kb) backupCount=5,
FileLogger.setFormatter(formatter_file) encoding='utf-8') # 每个日志文件最大102400字节(100Kb)
_logger.addHandler(ConsoleLogger) file_logger.setFormatter(formatter_file)
_logger.addHandler(FileLogger) _logger.addHandler(console_logger)
_logger.addHandler(file_logger)
return _logger return _logger
if __name__ != '__main__': if __name__ != '__main__':
logger = Logger().set_logger() logger = MakeLogger().setup_logger()