-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
bugSomething isn't workingSomething isn't working
Description
问题摘要
排查 objectstack-ai/spec 日志系统发现,日志过滤机制存在多个严重缺陷,导致日志级别配置无效、日志丢失或过度输出。
问题 1:浏览器环境下缺少日志级别过滤
- logger.ts 中,所有
debug/info/warn/error方法在浏览器环境直接输出,没有根据配置的level判断是否应该打印。 - 如设置
level='warn',debug()、info()仍然输出。
问题 2:Node端 Pino 日志器异步初始化造成启动日志丢失。
- logger 构造函数
initPinoLogger()异步执行,日志调用早于初始化时会 fallback 到 console,日志结构及级别可能失真。
问题 3:SchemaRegistry 日志过滤过于粗暴
- 仅有一个
log()方法,无warn或error分级,logLevel='warn'|'error'会导致所有注册/注销等日志静默丢失。
问题 4:silent 级别无效
- browser 下 silent 依然输出日志。
问题 5:测试未验证输出是否被正确过滤
- logger.test.ts 只检查不抛异常,并未断言实际 console 输出,无法发现过滤失效问题。
推荐修复方案
- 补充浏览器端日志级别过滤:
- 增加
shouldLog(level)方法,根据 config.level 检查优先级,过滤低级别日志。
- 增加
- Pino初始化竞态修复:
- 支持异步/ready钩子,初始化完毕前缓存日志或直接丢弃。
- SchemaRegistry 增加分级日志支持:
- log/info/warn/error 四个方法,优先级比较后输出到相应 console API。
- 修正 silent 级别逻辑。
- 单元测试增强,验证实际console输出与filter逻辑。
受影响范围
- packages/core/src/logger.ts
- packages/objectql/src/registry.ts
- packages/core/src/logger.test.ts
如需代码实现及PR,请通知我。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working