diff --git a/common/config.py b/common/config.py index a8c1283..b6cc3db 100644 --- a/common/config.py +++ b/common/config.py @@ -63,6 +63,8 @@ class ConfigReadException(Exception): "https_addr": "https://127.0.0.1:7890", }, "_proxy-desc": "代理配置,HTTP与HTTPS协议需分开配置", + "log_file": True, + "_log_file-desc": "是否开启日志文件", }, "security": { "rate_limit": { @@ -165,8 +167,6 @@ class ConfigReadException(Exception): "desc": "账号cookie数据,可以通过浏览器获取,需要vip账号来获取会员歌曲,如果没有请留为空值", "cookie": "" }, - "reject_unmatcher_quality": True, - "_reject_unmatcher_quality-desc": "是否拒绝不匹配的音质(默认拒绝),网易云API在当前环境无法获取该音质时会自动将低音质,开启此功能将拒绝被降级的音质返回", }, "mg": { "desc": "咪咕音乐相关配置", diff --git a/common/log.py b/common/log.py index f39959f..83d26d7 100644 --- a/common/log.py +++ b/common/log.py @@ -1,9 +1,9 @@ # ---------------------------------------- -# - mode: python - -# - author: helloplhm-qwq - -# - name: log.py - -# - project: lx-music-api-server - -# - license: MIT - +# - mode: python - +# - author: helloplhm-qwq - +# - name: log.py - +# - project: lx-music-api-server - +# - license: MIT - # ---------------------------------------- # This file is part of the "lx-music-api-server" project. @@ -14,21 +14,24 @@ from pygments.lexers import PythonLexer from pygments.formatters import TerminalFormatter from .utils import filterFileName, addToGlobalNamespace -from .variable import debug_mode, log_length_limit +from .variable import debug_mode, log_length_limit, log_file -if not os.path.exists("logs"): +if ((not os.path.exists("logs")) and log_file): try: os.mkdir("logs") except: pass + def highlight_error(error): # 对堆栈跟踪进行语法高亮 - highlighted_traceback = highlight(error, PythonLexer(), TerminalFormatter()) + highlighted_traceback = highlight( + error, PythonLexer(), TerminalFormatter()) # 返回语法高亮后的堆栈跟踪字符串 return str(highlighted_traceback) + class LogHelper(logging.Handler): # 日志转接器 def __init__(self, custom_logger): @@ -36,13 +39,14 @@ def __init__(self, custom_logger): self.custom_logger = custom_logger def emit(self, record): - #print(record) + # print(record) log_message = self.format(record) self.custom_logger.info(log_message) + class log: # 主类 - def __init__(self, module_name = 'Not named logger', output_level = 'INFO', filename = ''): + def __init__(self, module_name='Not named logger', output_level='INFO', filename=''): self._logger = logging.getLogger(module_name) if not output_level.upper() in dir(logging): raise NameError('Unknown loglevel: '+output_level) @@ -60,31 +64,30 @@ def __init__(self, module_name = 'Not named logger', output_level = 'INFO', file 'ERROR': 'red', 'CRITICAL': 'red,bg_white', }) - file_formatter = logging.Formatter( - '%(asctime)s|[%(name)s/%(levelname)s]|%(message)s', - datefmt='%Y-%m-%d %H:%M:%S' + if log_file: + file_formatter = logging.Formatter( + '%(asctime)s|[%(name)s/%(levelname)s]|%(message)s', + datefmt='%Y-%m-%d %H:%M:%S' ) - if filename: - filename = filterFileName(filename) - else: - filename = './logs/' + module_name + '.log' - file_handler = logging.FileHandler(filename, encoding = "utf-8") - file_handler.setFormatter(file_formatter) - file_handler_ = logging.FileHandler("./logs/console_full.log", encoding = "utf-8") - file_handler_.setFormatter(file_formatter) - self._logger.addHandler(file_handler_) - self._logger.addHandler(file_handler) + if filename: + filename = filterFileName(filename) + else: + filename = './logs/' + module_name + '.log' + file_handler = logging.FileHandler(filename, encoding="utf-8") + file_handler.setFormatter(file_formatter) + file_handler_ = logging.FileHandler( + "./logs/console_full.log", encoding="utf-8") + file_handler_.setFormatter(file_formatter) + self._logger.addHandler(file_handler_) + self._logger.addHandler(file_handler) console_handler = logging.StreamHandler() console_handler.setFormatter(formatter) self.module_name = module_name self._logger.addHandler(console_handler) - self.debug_ = logging.getLogger(module_name + '_levelChangedMessage') debug_handler = logging.StreamHandler() debug_handler.setFormatter(formatter) - self.debug_.addHandler(debug_handler) - self.debug_.setLevel(logging.DEBUG) - def debug(self, message, allow_hidden = True): + def debug(self, message, allow_hidden=True): if self.module_name == "flask" and "\n" in message: if message.startswith("Error"): return self._logger.error(message) @@ -95,10 +98,10 @@ def debug(self, message, allow_hidden = True): self._logger.info(m) return if len(str(message)) > log_length_limit and allow_hidden: - message = str(message)[:log_length_limit] + "..." + message = str(message)[:log_length_limit] + " ..." self._logger.debug(message) - def log(self, message, allow_hidden = True): + def log(self, message, allow_hidden=True): if self.module_name == "flask" and "\n" in message: if message.startswith("Error"): return self._logger.error(message) @@ -109,10 +112,10 @@ def log(self, message, allow_hidden = True): self._logger.info(m) return if len(str(message)) > log_length_limit and allow_hidden: - message = str(message)[:log_length_limit] + "..." + message = str(message)[:log_length_limit] + " ..." self._logger.info(message) - def info(self, message, allow_hidden = True): + def info(self, message, allow_hidden=True): if self.module_name == "flask" and "\n" in message: if message.startswith("Error"): return self._logger.error(message) @@ -143,19 +146,21 @@ def critical(self, message): def set_level(self, loglevel): loglevel_upper = loglevel.upper() if not loglevel_upper in dir(logging): - raise NameError('Unknown loglevel: '+loglevel) - self.debug_.debug('loglevel changed to: '+ loglevel_upper) + raise NameError('Unknown loglevel: ' + loglevel) self._logger.setLevel(getattr(logging, loglevel_upper)) def getLogger(self): return self._logger - + def addHandler(self, handler): self._logger.addHandler(handler) + printlogger = log('print') -def logprint(*args, sep = ' ', end = '', file = None, flush = None): - printlogger.info(sep.join(str(arg) for arg in args), allow_hidden = False) + +def logprint(*args, sep=' ', end='', file=None, flush=None): + printlogger.info(sep.join(str(arg) for arg in args), allow_hidden=False) + addToGlobalNamespace('print', logprint) diff --git a/common/variable.py b/common/variable.py index f225837..ca0a093 100644 --- a/common/variable.py +++ b/common/variable.py @@ -39,6 +39,7 @@ def _read_config(key): debug_mode = debug_mode if (debug_mode := _read_config("common.debug_mode")) else False log_length_limit = log_length_limit if (log_length_limit := _read_config("common.log_length_limit")) else 500 +log_file = log_file if (log_file := _read_config("common.log_file")) else True running = True config = {} workdir = os.getcwd()