跨环境日志库:浏览器基于 consola,Node/服务端基于 pino,统一的等级控制、样式定制与单次调用覆盖
pnpm add @guohanmin/logger
共 10 个公开导出,按类型分组。
创建一个跨环境日志实例:Node/服务端使用 pino(含 pino-pretty 同步美化输出), 浏览器使用 consola。具体使用哪个后端由 {@link checkIsServer} 在**调用 `createLogger()` 时**(而非模块加载时)决定,因此同一实现可以在不同测试环境下分别验证两条路径。
判断某次调用的等级是否达到当前配置的最低等级,即是否应该真正输出。 这是整个包里唯一负责等级过滤决策的函数。
单次调用可覆盖的字段:等级与(部分)样式,仅对本次调用生效,不影响全局配置。
`createLogger()` 返回的日志实例。
`createLogger()` 的创建选项。
跨库安全的样式定制字段集合。 刻意保持字段集很小——只挑选 consola(浏览器)与 pino/pino-pretty(Node) 都能表达、且语义足够接近的三个维度,避免把某一方库的专有概念泄漏进公共 API。
可用于单次日志调用(如 `.info()`)或单次调用覆盖的等级,即排除 `silent`。
统一日志等级,数值刻度与 pino 原生刻度完全一致(trace=10 .. fatal=60)。 `silent` 只用于 {@link LoggerOptions.level} / `setLevel()`,表示屏蔽所有输出, 不是某次调用可以使用的严重程度。
统一的日志方法签名:消息 + 可选结构化元数据 + 可选单次调用覆盖。
canonical 等级 -> 数值序号映射表。 所有等级过滤判断都必须通过这张表 + {@link shouldLog} 完成, 不能委托给 pino 或 consola 各自的内部等级过滤—— 两者的数值刻度完全不同(pino 数值越大越严重,consola 数值越小越严重), 直接混用会导致判断错误。`silent` 用 `Number.POSITIVE_INFINITY` 表示 "任何调用等级都不会大于等于它",因此配置为 `silent` 时 {@link shouldLog} 对所有 {@link CallableLogLevel} 都返回 `false`,无需为 `silent` 单独写分支。