Files
blackbird/liblogc/README.md
T
qing 7467e7bd42 docs: 整理文档——修复全部 file:// 失效链接、补齐缺失模块 README
- 将 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/)导致的失效引用
2026-08-10 15:48:29 +00:00

1.5 KiB
Raw Blame History

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