feat: 接入 LogHive 远程日志系统

- 添加 LogHiveHandler,启动时自动挂载到 root logger
- 所有 logging 日志自动异步发送到 LogHive,不影响主业务
- vendored loghive-client 包,Docker 构建时自动安装
- API Key 缺失时自动跳过,不影响本地开发
This commit is contained in:
2026-05-09 19:14:45 +08:00
parent 1f18d2ec87
commit 2996920277
10 changed files with 583 additions and 1 deletions
+5
View File
@@ -33,6 +33,11 @@ class Settings(BaseSettings):
scheduler_enabled: bool = True
scheduler_cron: str = "0 8-21 * * *"
# LogHive 日志系统
loghive_endpoint: str = "http://10.10.10.14:8000"
loghive_project: str = "gx-gp-notify"
loghive_api_key: str = ""
# Markdown
markdown_enabled: bool = True
markdown_output_file: str = "onu.md"
+11
View File
@@ -22,6 +22,17 @@ async def lifespan(app: FastAPI):
level=getattr(logging, settings.log_level),
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
)
# LogHive 远程日志(仅当配置了 API Key 时启用)
if settings.loghive_api_key:
from loghive_client import LogHiveHandler
handler = LogHiveHandler(
project=settings.loghive_project,
api_key=settings.loghive_api_key,
endpoint=settings.loghive_endpoint,
level=logging.INFO,
)
logging.getLogger().addHandler(handler)
logging.info("LogHive 日志系统已连接")
from app.scheduler.jobs import shutdown_scheduler, start_scheduler
start_scheduler()
yield