@ezuikit/utils-logger

中文文档
2.1.0发布于 2026/09/15MITTypeScriptCommonJS零依赖构建来源已验证近 30 天下载 1.6万

logger utils

原始使用文档
文档目录5 节
  1. Logger
  2. scripts
  3. 使用
  4. 多上下文 (context)
  5. 注册表管理

Logger

日志工具类

scripts


# http://localhost:3000
pnpm run dev

pnpm run build

使用

pnpm install @ezuikit/utils-logger

export interface LoggerOptions {
  level?: 'INFO' | 'LOG' | 'WARN' | 'ERROR';
  showTime?: boolean;
  name?: string;
}
import Logger from '@ezuikit/utils-logger';

const logger = new Logger({ level: 'INFO' });

logger.info('info');
logger.log('log');
logger.warn('warn');
logger.error('error');

// 更改日志等级 WARN 只打印 warn error
logger.setOptions({ level: 'WARN' });

logger.info('setOptions info');
logger.log('setOptions log');
logger.warn('setOptions warn');
logger.error('setOptions error');

多上下文 (context)

context(key) 按 key 拿到一个互相隔离的 logger 实例,同一个 key 始终返回同一个实例,不需要自己在业务里到处传引用。

const logger = Logger({ name: 'EZUIKIT', level: 'WARN' });

const player = logger.context('player');
player.warn('ready'); // [player] [WARN] ready

// 同名复用,拿到的是同一个实例
logger.context('player') === player; // true

三条语义:

隔离 — 每个上下文有自己的配置,setOptions 只影响自己,不会影响父实例,也不会影响其他上下文。

const player = logger.context('player');
const talk = logger.context('talk');

player.setOptions({ level: 'INFO' });

player.getOptions().level; // "INFO"
logger.getOptions().level; // "WARN"  父实例不受影响
talk.getOptions().level; // "WARN"  其他上下文不受影响

继承 — 创建时继承父实例当时的配置(level、showTime 等)。之后父实例再改配置,不会追溯到已创建的上下文。

const logger = Logger({ level: 'INFO' });
const before = logger.context('before'); // 继承到 INFO

logger.setOptions({ level: 'ERROR' });
const after = logger.context('after'); // 继承到 ERROR

before.getOptions().level; // "INFO"  不被追溯修改

前缀只显示自己的 key — 不会带上父实例的 name,也不会随嵌套层级累积。

const logger = Logger({ name: 'EZUIKIT' });
logger.log('x'); // [EZUIKIT] [LOG] x
logger.context('player').log('x'); // [player] [LOG] x
logger.context('player').context('hls').log('x'); // [hls] [LOG] x

注册表管理

logger.context('player');
logger.context('talk');

logger.getContexts(); // ["player", "talk"]  已创建的 key 列表
logger.hasContext('player'); // true
logger.removeContext('talk'); // true,移除后再 context("talk") 会创建新实例

上下文实例长期持有会一直占着内存,播放器这类会反复创建销毁的场景,销毁时用 removeContext(key) 清掉即可。已经被外部持有的旧实例仍然可用,只是不再被复用。

版本与发布记录

@ezuikit/utils-logger 共发布 12 个版本,首次发布于 2023/10/23;过去 12 个月发布了 2 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.1.0latest2026/09/151 个月前
2.0.12026/01/169 个月前
2.0.02025/11/141 年前
2.0.0-beta.1beta2025/11/091 年前
1.1.02025/08/291.2 年前
1.0.12024/03/232 年前

关于 @ezuikit/utils-logger 的常见问题

@ezuikit/utils-logger 是什么?

logger utils

如何安装 @ezuikit/utils-logger?

在项目目录运行 npm install @ezuikit/utils-logger,或使用 pnpm add / yarn add / bun add。

@ezuikit/utils-logger 支持 TypeScript 吗?

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

@ezuikit/utils-logger 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@ezuikit/utils-logger 可以商用吗?

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

@ezuikit/utils-logger 的下载量有多少?

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

@ezuikit/utils-logger 还在维护吗?

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