# @ezuikit/utils-logger 中文文档

规范地址：https://npmcn.com/package/%40ezuikit/utils-logger/

版本：2\.1\.0
npm 元数据更新时间：2026-09-15T12:29:53.733Z
中文译文更新时间：2026-11-14T07:08:19.056Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40ezuikit/utils-logger
原文对照：https://npmcn.com/package/%40ezuikit/utils-logger/?lang=original
项目主页：https://github.com/Ezviz-OpenBiz/EZUIKit-player-utils#readme
源码仓库：https://github.com/Ezviz-OpenBiz/EZUIKit-player-utils

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：126 kB，6 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2023-10-23T06:08:45.946Z
- 最新版本发布：2026-09-15T12:29:53.382Z
- 近 30 天下载量：15776（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：12（近 12 个月 2 个）

## 中文简介

日志图

## 安装

```sh
npm install @ezuikit/utils-logger
```

也可以使用：`pnpm add @ezuikit/utils-logger`、`yarn add @ezuikit/utils-logger`、`bun add @ezuikit/utils-logger`

## README

## Logger

日志工具类

## scripts

```bash

# http://localhost:3000
pnpm run dev

pnpm run build

```

## 使用

```bash
pnpm install @ezuikit/utils-logger

```

```ts
export interface LoggerOptions {
  level?: 'INFO' | 'LOG' | 'WARN' | 'ERROR';
  showTime?: boolean;
  name?: string;
}
```

```ts
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 始终返回同一个实例，不需要自己在业务里到处传引用。

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

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

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

三条语义：

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

```ts
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` 等）。之后父实例再改配置，不会追溯到已创建的上下文。

```ts
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`，也不会随嵌套层级累积。

```ts
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
```

### 注册表管理

```ts
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 是什么？

日志图

### 如何安装 @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 和提交记录判断。

