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
致谢
我们感谢所有帮助实现这个版本的贡献者,包括那些报告问题、提交拉取请求和提供反馈的人。
有关完整的变更列表,请参阅更新日志。