- 将 7 个文档中的 mac 绝对路径链接(file:///Users/qingsong/...)转换为仓库相对路径, 并修正错误目标:aibox 入口 main.py → aibox.py、pymsg C++ 实现 → libmsg/inc/us/Msg.hpp、 bot4cj cpp/cnn → cuda - 主 README 补 liblogc 基础库条目与 confs2 归档说明,安装顺序补 ca - 新增 liblogc / libtry / confs2 / 3d / memdb README - 同步 db2 脚本迁移(db/create_sqlite3.sql → db2/scripts/)导致的失效引用
1.5 KiB
1.5 KiB
liblogc — 统一集中式日志客户端(C++ 版)
C++20 统一日志客户端库,对应 Python 侧的 log_client.py:通过 pymsg/TCP 调用 db2:8005 的 execute 路由,逐条 INSERT 到 Logs 表,实现集中式日志收集。
命名空间 qing,库文件 libus_logc.so,头文件安装至 /usr/include/us/LogC.hpp。被 ca / core / gateway / captcha2 / smtp3 等 C++ 服务依赖。
设计要点
- 异步非阻塞:基于
pmc::net::AsyncQueue内存队列 + 后台线程批量推送,不阻塞业务。 - 缓冲批量:队列满 50 条或超时 2 秒自动 flush。
- 背压保护:队列上限 10000 条,满时丢弃最旧日志,防止内存无限增长。
- 级别过滤:
set_level()设定阈值,低于阈值的日志直接丢弃。 - fail-safe:db2 不可用时静默丢弃(仅 stderr 提示),绝不影响业务。
- 可配置:
set_endpoint()/set_service_name(),各服务复用同一份库。
用法
#include <us/LogC.hpp>
// 启动时配置(默认 127.0.0.1:8005)
qing::LogC::instance().set_endpoint("127.0.0.1", 8005);
qing::LogC::instance().set_service_name("gateway-log");
qing::LogC::instance().set_level("warn");
qing::LogC::instance().info("gateway", "启动完成");
qing::LogC::instance().error("gateway", "连接失败", std::nullopt, R"({"errno":111})");
// 进程退出前调用(幂等)
qing::LogC::instance().shutdown();
构建安装
bash _set.sh