Files
go-sip/docs/logging.md
T

3.1 KiB

Dispatcher / Agent 日志

两个角色统一由 Logrus 输出一行一条的 JSON 日志。已有 slog 和标准 log 调用交给同一输出,不另设日志系统。

启动

sip-go-agent dispatcher --mode nonprod-real --debug
sip-go-agent agent --mode nonprod-real -D

不传 --debug/-D:记录工作流程、交互方向、阶段、关联身份、结果、耗时和错误,不记录收发正文。传入后:保留这些记录,并增加实际 HTTP、MQ、Unary RPC 收发正文的安全副本;不截断非敏感 JSON 业务字段。

Agent 的抓包开关独立为 --capture:只在显式开启时要求 AGENT_EVIDENCE_ROOT 及逐通有效的外部抓包凭证。--debug/-D 不启动抓包、不要求 tcpdump 或证据凭证;--capture 也不自动开启详细日志。独立 sip-call 的 --debug/-D 仍保留原有抓包含义,本次不改。

记录内容

  • HTTP:请求开始、实际被读取的请求/响应 JSON、响应状态、正文读取结果。认证头不记录;URL 的认证、查询和 fragment 部分删除。SDK/native ARI 的 HTTP 客户端使用同一观察输出,保留 TLS、超时、重定向和 WebSocket 升级行为。
  • MQ:实际入站/出站字节;接收、校验、处理、ACK/NACK/Reject、发布及 broker confirm。publisher_confirmed 只证明 RabbitMQ 确认,记录 saas_processed=false,不能据此声称 SaaS 已处理。
  • RPC:实际边界的 protobuf 请求/响应投影,明确 wire_encoding=protobuf。冻结配置中的 *_json 字节展开为 JSON,其余字节仅记录长度;不是业务内部 CallSpec,也不声称 JSON 是 protobuf 原始线格式。客户端响应收到和服务端响应准备完成分别记录,服务端返回不能冒充对端收讫。
  • 业务流程:持久接纳/重复忽略、等待准入、选线、预占、请求执行、Agent 排程/执行/结束、结果回报及恢复。

event_id/task_id/call_id/request_id 等已有标识用于关联记录;只有组件实际掌握的标识才输出。

正文边界

密钥、Token、认证信息、完整 prompt/messages/transcript/text/content/结束语、原始 SIP 内容及音频不输出。敏感字段按键名隐藏,重复键逐个处理;其他 JSON 的空白、重复键和数字写法保留,原业务字节与对象不修改。HTTP 二进制和升级后的 WebSocket 流不进入正文日志。

非法 JSON、无法安全展开的嵌套数据或部分读取不能退回打印未经处理的正文:输出 redaction_error、字节数及 SHA-256。HTTP body_complete=false 只表示已观测部分,不能把它当作完整网络正文;原读取/关闭错误继续返回,不因日志改变重试、确认或业务结果。

固定环境部署及查看

python3 deploys/production/production.py deploy --host server.sip --debug
journalctl --user -u go-sip-dispatcher.service -f -o cat
journalctl --user -u go-sip-agent.service -f -o cat

部署时 --debug 同时写入两个固定服务,不增加 --capture,普通重部署不清数据。实际收发详情仅出现于该交互确实发生时;不得为了验证日志生成外呼消息或独立调用真实 AI/OSS。