mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-22 15:13:55 +08:00
Merge pull request #1386 from xinnan-tech/py_server_log
update:日志配置动态获取
This commit is contained in:
@@ -5,6 +5,7 @@ from config.config_loader import load_config
|
||||
from config.settings import check_config_file
|
||||
|
||||
SERVER_VERSION = "0.5.1"
|
||||
_logger_initialized = False
|
||||
|
||||
|
||||
def get_module_abbreviation(module_name, module_dict):
|
||||
@@ -43,41 +44,89 @@ def setup_logging():
|
||||
"""从配置文件中读取日志配置,并设置日志输出格式和级别"""
|
||||
config = load_config()
|
||||
log_config = config["log"]
|
||||
log_format = log_config.get(
|
||||
"log_format",
|
||||
"<green>{time:YYMMDD HH:mm:ss}</green>[{version}_{selected_module}][<light-blue>{extra[tag]}</light-blue>]-<level>{level}</level>-<light-green>{message}</light-green>",
|
||||
)
|
||||
log_format_file = log_config.get(
|
||||
"log_format_file",
|
||||
"{time:YYYY-MM-DD HH:mm:ss} - {version_{selected_module}} - {name} - {level} - {extra[tag]} - {message}",
|
||||
)
|
||||
selected_module_str = build_module_string(config.get("selected_module", {}))
|
||||
global _logger_initialized
|
||||
|
||||
log_format = log_format.replace("{version}", SERVER_VERSION)
|
||||
log_format = log_format.replace("{selected_module}", selected_module_str)
|
||||
log_format_file = log_format_file.replace("{version}", SERVER_VERSION)
|
||||
log_format_file = log_format_file.replace("{selected_module}", selected_module_str)
|
||||
# 第一次初始化时配置日志
|
||||
if not _logger_initialized:
|
||||
logger.configure(extra={"selected_module": log_config.get("selected_module", "00000000000000")}) # 新增配置
|
||||
log_format = log_config.get(
|
||||
"log_format",
|
||||
"<green>{time:YYMMDD HH:mm:ss}</green>[{version}_{extra[selected_module]}][<light-blue>{extra[tag]}</light-blue>]-<level>{level}</level>-<light-green>{message}</light-green>",
|
||||
)
|
||||
log_format_file = log_config.get(
|
||||
"log_format_file",
|
||||
"{time:YYYY-MM-DD HH:mm:ss} - {version_{extra[selected_module]}} - {name} - {level} - {extra[tag]} - {message}",
|
||||
)
|
||||
selected_module_str = logger._core.extra["selected_module"]
|
||||
|
||||
log_level = log_config.get("log_level", "INFO")
|
||||
log_dir = log_config.get("log_dir", "tmp")
|
||||
log_file = log_config.get("log_file", "server.log")
|
||||
data_dir = log_config.get("data_dir", "data")
|
||||
log_format = log_format.replace("{version}", SERVER_VERSION)
|
||||
log_format = log_format.replace("{selected_module}", selected_module_str)
|
||||
log_format_file = log_format_file.replace("{version}", SERVER_VERSION)
|
||||
log_format_file = log_format_file.replace("{selected_module}", selected_module_str)
|
||||
|
||||
os.makedirs(log_dir, exist_ok=True)
|
||||
os.makedirs(data_dir, exist_ok=True)
|
||||
log_level = log_config.get("log_level", "INFO")
|
||||
log_dir = log_config.get("log_dir", "tmp")
|
||||
log_file = log_config.get("log_file", "server.log")
|
||||
data_dir = log_config.get("data_dir", "data")
|
||||
|
||||
# 配置日志输出
|
||||
logger.remove()
|
||||
os.makedirs(log_dir, exist_ok=True)
|
||||
os.makedirs(data_dir, exist_ok=True)
|
||||
|
||||
# 输出到控制台
|
||||
logger.add(sys.stdout, format=log_format, level=log_level, filter=formatter)
|
||||
# 配置日志输出
|
||||
logger.remove()
|
||||
|
||||
# 输出到文件
|
||||
logger.add(
|
||||
os.path.join(log_dir, log_file),
|
||||
format=log_format_file,
|
||||
level=log_level,
|
||||
filter=formatter,
|
||||
)
|
||||
# 输出到控制台
|
||||
logger.add(sys.stdout, format=log_format, level=log_level, filter=formatter)
|
||||
|
||||
# 输出到文件
|
||||
logger.add(
|
||||
os.path.join(log_dir, log_file),
|
||||
format=log_format_file,
|
||||
level=log_level,
|
||||
filter=formatter,
|
||||
)
|
||||
_logger_initialized = True # 标记为已初始化
|
||||
|
||||
return logger
|
||||
|
||||
|
||||
def update_module_string(selected_module_str):
|
||||
"""更新模块字符串并重新配置日志处理器"""
|
||||
logger.debug(f"更新日志配置组件")
|
||||
current_module = logger._core.extra["selected_module"]
|
||||
|
||||
if current_module == selected_module_str:
|
||||
return
|
||||
|
||||
try:
|
||||
logger.configure(extra={"selected_module": selected_module_str})
|
||||
|
||||
config = load_config()
|
||||
log_config = config["log"]
|
||||
|
||||
log_format = log_config.get(
|
||||
"log_format",
|
||||
"<green>{time:YYMMDD HH:mm:ss}</green>[{version}_{extra[selected_module]}][<light-blue>{extra[tag]}</light-blue>]-<level>{level}</level>-<light-green>{message}</light-green>",
|
||||
)
|
||||
log_format_file = log_config.get(
|
||||
"log_format_file",
|
||||
"{time:YYYY-MM-DD HH:mm:ss} - {version_{extra[selected_module]}} - {name} - {level} - {extra[tag]} - {message}",
|
||||
)
|
||||
|
||||
log_format = log_format.replace("{version}", SERVER_VERSION)
|
||||
log_format = log_format.replace("{selected_module}", selected_module_str)
|
||||
log_format_file = log_format_file.replace("{version}", SERVER_VERSION)
|
||||
log_format_file = log_format_file.replace("{selected_module}", selected_module_str)
|
||||
|
||||
logger.remove()
|
||||
logger.add(sys.stdout, format=log_format, level=log_config.get("log_level", "INFO"), filter=formatter)
|
||||
logger.add(
|
||||
os.path.join(log_config.get("log_dir", "tmp"), log_config.get("log_file", "server.log")),
|
||||
format=log_format_file,
|
||||
level=log_config.get("log_level", "INFO"),
|
||||
filter=formatter
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"日志配置更新失败: {str(e)}")
|
||||
raise
|
||||
|
||||
@@ -19,7 +19,6 @@ from core.utils.util import (
|
||||
initialize_tts,
|
||||
)
|
||||
from typing import Dict, Any
|
||||
from config.logger import setup_logging
|
||||
from core.mcp.manager import MCPManager
|
||||
from core.handle.reportHandle import report
|
||||
from core.providers.tts.default import DefaultTTS
|
||||
@@ -33,6 +32,7 @@ from core.auth import AuthMiddleware, AuthenticationError
|
||||
from config.config_loader import get_private_config_from_api
|
||||
from core.handle.receiveAudioHandle import handleAudioMessage
|
||||
from core.providers.tts.dto.dto import ContentType, TTSMessageDTO, SentenceType
|
||||
from config.logger import setup_logging, build_module_string, update_module_string
|
||||
from config.manage_api_client import DeviceNotFoundException, DeviceBindException
|
||||
|
||||
|
||||
@@ -299,7 +299,10 @@ class ConnectionHandler:
|
||||
|
||||
def _initialize_components(self):
|
||||
try:
|
||||
|
||||
self.selected_module_str = build_module_string(
|
||||
self.config.get("selected_module", {})
|
||||
)
|
||||
update_module_string(self.selected_module_str)
|
||||
"""初始化组件"""
|
||||
if self.config.get("prompt") is not None:
|
||||
self.prompt = self.config["prompt"]
|
||||
|
||||
Reference in New Issue
Block a user