golang mcp 服务端指南

日志系统字段与查询语法

测试素材:日志聚合系统字段与查询语法

虚构系统,仅用于演示 Resources 功能,勿当作真实文档。

时间范围 time_range

支持相对和绝对两种写法:

写法 例子 含义
相对 30m / 1h / 2d 从当前时刻往前推,m 分钟、h 小时、d 天
绝对 2025-03-27T10:00:00/2025-03-27T11:00:00 ISO 8601,本地时区,左闭右开

相对写法最多支持 7d;再往前必须用绝对写法,否则服务端直接报错。

日志级别 log_levels

级别 含义
debug 调试细节,量极大,排查时才开
info 正常业务流程
warn 可恢复的异常,如连接池接近上限
error 请求失败、下游报错

error 已包含 fatal 和 panic,不需要另外筛。不传 log_levels 时返回全部级别。

返回格式

每条日志一行,格式固定为:

<时间> <级别> <服务名> <消息>
2025-03-27 10:02:00.000 ERROR billing-service 调用 billing.DecodeInvoice: context deadline exceeded

消息里可能带多行堆栈,会被转义成 \n,仍是单行返回。

建议的排查顺序

  1. 先调 list_services 拿到准确的服务名——服务名拼错时查询会静默返回空结果,不报错。
  2. 用 30m + error 级别先看有没有硬失败。
  3. 没有 error 就放宽到 warn,并扩大到 2h——连接池、缓存淘汰这类前兆都在 warn 里。
  4. 定位到时间点后,用绝对时间范围缩小到 5 分钟,去掉级别过滤看完整上下文。