关于 workleap-logging
@workleap/logging 是面向 Workleap 前端应用的结构化日志库,提供分级浏览器日志与作用域记录,并可将日志转发到多个记录器。
主要功能
- 01支持样式的浏览器控制台日志
- 02五种严重级别
- 03缓冲并分组的日志作用域
- 04链式组合文本、对象和错误
- 05组合记录器转发日志
适用场景
- 01为多步骤操作分组记录日志
- 02记录带上下文的前端错误
- 03将日志条目发送到多个记录器
- 04按严重级别控制诊断信息
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ workleap/ wl-logging --skill workleap-logging安装后在 Claude Code 中输入/workleap-logging确认已加载。
附带文件references/api.mdreferences/patterns.md
详细介绍
Workleap Logging (@workleap/logging)
适用于 Workleap 前端应用的结构化日志记录库。提供可组合、带样式的控制台日志记录,支持作用域、多种日志级别以及与遥测工具集成。
该库导出四种关键类型:Logger(基础接口)、RootLogger(扩展 Logger 并支持作用域)、BrowserConsoleLogger 和 CompositeLogger。
安装
pnpm add @workleap/logging
核心概念
日志记录器
- BrowserConsoleLogger:将日志输出到浏览器控制台,并支持样式
- CompositeLogger:将日志转发给多个底层日志记录器
- createCompositeLogger(verbose, loggers):创建
CompositeLogger的工厂函数。当verbose为true且未提供日志记录器时,会添加BrowserConsoleLogger;否则仅使用你传入的日志记录器(空列表不会产生任何输出)。详情请参阅references/api.md。
日志级别(从低到高)
debug- 用于开发的详细诊断信息information- 应用的常规流程事件warning- 需要关注的非关键问题error- 导致功能无法完成的故障(在生产环境中会触发告警)critical- 可能危及数据完整性的严重错误
作用域
作用域会在内存中缓冲日志条目,并在调用 .end() 时将其作为分组内容输出。这有助于在嘈杂的控制台输出中追踪多步骤操作。
const scope = logger.startScope("User signup");
scope.debug("Validating...");
scope.information("Signup complete");
scope.end();
Logger 接口未公开 startScope,因为作用域属于根级别功能。使用 Squide 的 useLogger() 时,返回类型为 Logger,因此请转换为 RootLogger 以访问作用域方法:
import { useLogger } from "@squide/firefly";
import type { RootLogger } from "@workleap/logging";
const logger = useLogger();
(logger as RootLogger).startScope("User signup");
链式片段
通过串联片段来构建复杂的日志条目。未调用终结日志级别方法(.debug()、.error() 等)的链不会产生任何输出,这是日志缺失最常见的原因。
logger
.withText("Processing order")
.withObject({ orderId: 123 })
.withError(new Error("Failed"))
.error();
// Output: [error] Processing order { orderId: 123 } Error: Failed
常见问题
- 忘记调用终结日志方法:未调用
.debug()、.error()等方法的链不会产生任何输出。 - 未结束作用域:作用域内的条目会在内存中缓冲,只有调用
.end()后才会刷新到控制台。若不调用该方法,日志会悄然丢失。 - 将
warning用于故障:故障应使用error,warning用于非关键问题。这一区分很重要,因为生产环境的告警和日志筛选依赖准确的严重性级别。 - 记录敏感数据:日志条目可能出现在 LogRocket 会话回放和浏览器开发者工具中,因此包含凭据或个人身份信息(PII)会带来合规与安全风险。
- 缺少错误上下文:未使用
withObject()提供相关数据、未使用withError()提供异常时,错误日志就会缺少在生产环境中重现问题所需的信息。
参考指南
references/api.md— 需要查看构造函数签名、完整方法列表(带样式的文本、换行、withObject、withError)、作用域生命周期 API 或 createCompositeLogger 详情时阅读。references/patterns.md— 从头设置日志记录器、与 LogRocket 集成、为功能或操作实现作用域日志记录,或审查日志记录代码的 PR 时阅读。
评论
支持 Markdown