SuperAPI AI 工具集

logging

测试与质量

查看项目

更新于 10-16 04:58

技能介绍

用途:为 Sandbox SDK 及容器运行时添加日志、调试代码以及统一使用 Logger。

主要能力与约定:日志器通过构造函数显式注入,代码库中不存在全局或环境日志器。示例:class MyService { constructor(private logger: Logger) {} }。使用 logger.child({ ... }) 创建子日志器,将结构化上下文附加到该子日志器的每一行日志上;推荐在工作单元(请求、操作、会话)的边界处创建子日志器,而不是每次调用都重新传入上下文。

配置:两个环境变量在启动时读取一次。SANDBOX_LOG_LEVEL 取值 debug | info | warn | error,表示最低输出级别;SANDBOX_LOG_FORMAT 取值 json | pretty,表示输出格式。生产环境用 json(便于机器解析),本地开发用 pretty。

测试:从 @repo/shared 引入 createNoOpLogger() 以在测试中静默日志,例如 const service = new MyService(createNoOpLogger())。单元测试中不要构造真实日志器,以免产生噪声或用日志输出掩盖真实失败。

添加日志的建议级别:info 用于重要生命周期事件(操作开始/完成);debug 用于细粒度追踪(请求体、中间状态);warn 用于可恢复的异常;error 用于会浮现给调用方的失败,并以结构化上下文包含错误对象:logger.error('Failed', { err })。结构化上下文应作为第二个参数传入,而不是用字符串插值。

限制:资料未提供日志采样、轮转、导出目的地、性能开销或与具体运行时后端的集成细节。