@andrewheberle/ts-slog

中文文档
1.5.0发布于 2026/09/16MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 2859

TypeScript 的简单结构记录器

中文使用文档
文档目录13 节
  1. 安装
  2. 使用量
  3. 基本示例
  4. 日志级别
  5. 配置
  6. 添加上下文
  7. 组
  8. 文本输出
  9. API 密码
  10. new Logger(settings?)
  11. 方法
  12. 职能
  13. 许可证

@andrewheberle/ts-slog (英语)

TypeScript 应用程序的简单结构记录器.

安装

npm install @andrewheberle/ts-slog

使用量

基本示例

import { Logger } from '@andrewheberle/ts-slog'

const logger = new Logger()

logger.info("Application started")
logger.debug("Debug information", "userId", 123, "action", "login")
logger.warn("Warning message", "retries", 3)
logger.error("An error occurred", "errorCode", 500)

日志级别

日志支持四个日志级别:

  • Debug (0) - 详细调试信息
  • Info (1) - 一般信息信息(默认)
  • Warning (2) - 警告信息
  • Error (3) - 错误信息

配置

创建日志实例时配置最小日志级别 :

import { Logger, LogLevel } from "@andrewheberle/ts-slog"

// Only log warnings and errors
const logger = new Logger({ minLevel: LogLevel.Warning })

logger.debug("This won't be logged")
logger.info("This won't be logged either")
logger.warn("This will be logged")
logger.error("This will be logged too")

添加上下文

通过通过附加参数添加密钥值对以登录条目 :

import { Logger } from "@andrewheberle/ts-slog"

const logger = new Logger()

logger.info(
    "User logged in",
    "userId", 123,
    "username", "john.doe",
    "ip", "192.168.1.1"
)

// Output:
// {
//   level: 'info',
//   message: 'User logged in',
//   userId: 123,
//   username: 'john.doe',
//   ip: '192.168.1.1'
// }

组

一组K/V对可分组如下:

import { group, Logger } from "@andrewheberle/ts-slog"

const logger = new Logger()

logger.info(
    "User logged in",
    ...group("user", "id", 123, "username", "john.doe"),
    "ip", "192.168.1.1"
)

// Output:
// {
//   level: 'info',
//   message: 'User logged in',
//   user.id: 123,
//   user.username: 'john.doe',
//   ip: '192.168.1.1'
// }

文本输出

默认,默认 logHandler 将日志对象直接传递到 console.log。使用内置 TextHandler 改为格式化条目 作为一行案文:

import { Logger, TextHandler } from "@andrewheberle/ts-slog"

const logger = new Logger({ logHandler: TextHandler })

logger.info("User logged in", "userId", 123, "action", "login")

// Output:
// INFO User logged in userId=123 action=login

引用含有白空格的字符串值 :

logger.info("User logged in", "name", "John Doe", "userId", 123)

// Output:
// INFO: User logged in name="John Doe" userId=123

API 密码

new Logger(settings?)

创建新的日志实例.

参数:

  • settings (可选):配置对象
    • logHandler: Handler 到输出日志( 默认值 : console.log(中文(简体) )
    • minLevel: 最小日志级别( 默认值 : LogLevel.Info(中文(简体) )

方法

  • debug(message: string, ...args: unknown[]): void - 在“调试”级别登录
  • info(message: string, ...args: unknown[]): void - 在“ info”级登录
  • warn(message: string, ...args: unknown[]): void - 在“警告”一级登录
  • error(message: string, ...args: unknown[]): void - 记录在“错误”一级
  • with(...args: unknown[]): Logger - 返回一个新的 Logger 增加了 K/V 对

所有方法都接受一个消息串,然后是可选的密钥值对.

职能

  • group(key: string, ...args: unknown[]): unknown[] - 根据密钥前缀创建 K/V 对
  • TextHandler(output: Record<string, unknown>): void - 一个 logHandler 将日志条目格式化为文本(level message key=value ...)并通过 console.log

许可证

麻省理工学院

版本与发布记录

@andrewheberle/ts-slog 共发布 7 个版本,首次发布于 2025/11/07;过去 12 个月发布了 5 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.5.0latest2026/09/161 个月前
1.4.12026/07/024 个月前
1.4.02026/07/024 个月前
1.3.02026/04/027 个月前
1.2.02025/11/2111 个月前
1.1.02025/11/071 年前

关于 @andrewheberle/ts-slog 的常见问题

@andrewheberle/ts-slog 是什么?

TypeScript 的简单结构记录器

如何安装 @andrewheberle/ts-slog?

在项目目录运行 npm install @andrewheberle/ts-slog,或使用 pnpm add / yarn add / bun add。

@andrewheberle/ts-slog 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@andrewheberle/ts-slog 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@andrewheberle/ts-slog 可以商用吗?

@andrewheberle/ts-slog 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@andrewheberle/ts-slog 的下载量有多少?

根据 npm 官方下载统计,@andrewheberle/ts-slog 在 2026/10/06 – 2026/11/04 这 30 天内被下载 2,859 次,日均约 95 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@andrewheberle/ts-slog 还在维护吗?

最新版本 1.5.0 发布于 2026/09/16(1 个月前);至今共发布 7 个版本,其中过去 12 个月发布了 5 个;首次发布于 2025/11/07。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。