mirror of
https://github.com/LiteyukiStudio/LiteyukiBot.git
synced 2025-10-05 01:46:24 +00:00
🔧 重构配置管理,添加配置文件支持,更新日志系统,优化守护进程,完善测试用例
This commit is contained in:
39
liteyukibot/log.py
Normal file
39
liteyukibot/log.py
Normal file
@@ -0,0 +1,39 @@
|
||||
import inspect
|
||||
import logging
|
||||
import sys
|
||||
|
||||
from yukilog import default_debug_and_trace_format, default_format, get_logger
|
||||
|
||||
logger = get_logger("INFO")
|
||||
|
||||
class LoguruHandler(logging.Handler):
|
||||
def emit(self, record: logging.LogRecord):
|
||||
try:
|
||||
level = logger.level(record.levelname).name
|
||||
except ValueError:
|
||||
level = str(record.levelno)
|
||||
|
||||
frame, depth = inspect.currentframe(), 0
|
||||
while frame and (depth == 0 or frame.f_code.co_filename == logging.__file__):
|
||||
frame = frame.f_back
|
||||
depth += 1
|
||||
|
||||
logger.opt(depth=depth, exception=record.exc_info).log(
|
||||
level, record.getMessage()
|
||||
)
|
||||
|
||||
# 替换 logging 的全局日志器
|
||||
root_logger = logging.getLogger()
|
||||
root_logger.handlers = [LoguruHandler()] # 只保留 LoguruHandler
|
||||
root_logger.setLevel(logging.INFO)
|
||||
|
||||
|
||||
def set_level(level: str):
|
||||
"""设置日志级别
|
||||
|
||||
Args:
|
||||
level (str): 日志级别
|
||||
"""
|
||||
logger.remove()
|
||||
logger.add(sys.stdout, format=default_format if level not in ["DEBUG", "TRACE"] else default_debug_and_trace_format, level=level)
|
||||
logging.getLogger().setLevel(level)
|
Reference in New Issue
Block a user