LogTape 0.12.0 发布说明

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub
LogTape 是一个零依赖的 JavaScript 和 TypeScript 日志库,提供简单而灵活的日志系统。它支持多种 JavaScript 运行时环境(Deno、Node.js、Bun、浏览器和边缘函数),具有层次化分类、结构化日志记录功能,并为应用程序和库提供无缝集成。
0.12.0 版本新特性
Trace 日志级别
LogTape 现在包含 trace 严重性级别,它在详细程度层次结构中位于 debug 之下。这一新增功能提供了对日志输出更精细的控制,特别适用于在开发和调试过程中跟踪详细的执行流程。
- 在 LogLevel联合类型中添加了"trace"
- 添加了 Logger.trace()方法用于记录 trace 级别的消息
- 完整的严重性层次结构现在是:trace<debug<info<warning<error<fatal
增强的文件接收器性能
文件接收器现在支持可配置的缓冲,显著提高了高容量日志场景下的写入性能。
- 添加了 bufferSize选项(默认值:8192 字符)来控制写入缓冲行为
- 添加了 flushInterval选项(默认值:5000 毫秒)用于基于时间的自动缓冲刷新
- 将 bufferSize设置为 0 可实现无缓冲的即时写入
- 将 flushInterval设置为 0 可禁用基于时间的刷新
- 当接收器被销毁时,缓冲区内容会自动刷新
这些选项适用于 getFileSink() 和 getRotatingFileSink() 函数。
Syslog 支持
新的 @logtape/syslog 包支持使用 RFC 5424 格式向 syslog 服务器发送日志消息。
- 支持 UDP 和 TCP 协议
- 支持所有标准 RFC 5424 设施(kern、user、mail、daemon、local0–7等)
- 基于日志级别自动计算优先级
- 支持日志记录属性的结构化数据
- 与 Deno、Node.js 和 Bun 的跨运行时兼容性
- 可配置的连接超时、自定义主机名和应用程序名称
Logger 方法别名
添加了 Logger.warning() 作为 Logger.warn() 的别名,以确保与 LogLevel 类型定义的一致性。这一变更解决了命名不匹配的问题,即 LogLevel 联合类型使用 "warning" 而 logger 方法命名为 warn(),使元编程和动态方法调用更加直观。
统一包发布
从 0.12.0 版本开始,所有 LogTape 包(包括 @logtape/otel、@logtape/sentry 和 @logtape/syslog)共享相同的版本号并一起发布。这确保了包之间的兼容性,并简化了用户的版本管理。
改进的构建基础设施
LogTape 已从 dnt 迁移到 tsdown 进行 npm 包打包。tsdown 是一个基于 Rolldown 构建的面向库的打包工具,Rolldown 是一个基于 Rust 的打包工具,为下一代 Vite 提供动力。与通用打包工具不同,tsdown 专门针对构建 TypeScript 和 JavaScript 库进行了优化,配置最小化。这一变更带来了几个好处:
- 消除了 Webpack、Vite 和其他构建工具中的打包警告
- 提高了与现代 JavaScript 工具链的兼容性
- 更好的 tree-shaking 支持
- 更清晰的包输出
- 通过基于 Rust 的性能优化实现更快的构建时间
迁移指南
更新到 Trace 级别
如果您的代码依赖于 debug 作为最低严重性级别,您可能需要更新日志级别配置:
// 之前
{ lowestLevel: "debug" }  // 这是最详细的设置
// 之后
{ lowestLevel: "trace" }  // 现在包含 trace 消息利用缓冲区配置
要在高吞吐量场景中优化文件接收器性能:
getFileSink("app.log", {
  bufferSize: 16384,      // 更大的缓冲区以提高性能
  flushInterval: 10_000    // 每 10 秒刷新一次
})安装
LogTape 0.12.0 可在 JSR 和 npm 上获取:
deno add jsr:@logtape/logtape  # Deno
npm  add     @logtape/logtape  # npm
pnpm add     @logtape/logtape  # pnpm
yarn add     @logtape/logtape  # yarn
bun  add     @logtape/logtape  # Bun对于 syslog 接收器:
deno add jsr:@logtape/syslog  # Deno
npm  add     @logtape/syslog  # npm
pnpm add     @logtape/syslog  # pnpm
yarn add     @logtape/syslog  # yarn
bun  add     @logtape/syslog  # Bun致谢
我们感谢所有帮助实现这个版本的贡献者,包括那些报告问题、提交拉取请求和提供反馈的人。
有关完整的变更列表,请参阅更新日志。