# @equinor/fusion-log 中文文档

规范地址：https://npmcn.com/package/%40equinor/fusion-log/

版本：2\.0\.8
npm 元数据更新时间：2026-11-12T09:54:10.086Z
中文译文更新时间：2026-11-13T20:15:21.436Z
软件包许可：ISC

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

原始 npm 页面：https://www.npmjs.com/package/%40equinor/fusion-log
原文对照：https://npmcn.com/package/%40equinor/fusion-log/?lang=original
项目主页：https://github.com/equinor/fusion-framework/tree/master/packages/utils/log/#readme
源码仓库：https://github.com/equinor/fusion-framework

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

- 包体积（解压后）：165 kB，25 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：2 个
- peer 依赖：rxjs \>=7，chalk \>=5
- 首次发布：2024-05-22T13:46:46.097Z
- 最新版本发布：2026-11-12T09:54:09.795Z
- 近 30 天下载量：12845（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：41（近 12 个月 16 个）

## 中文简介

Fusion 前端开发日志工具

## 安装

```sh
npm install @equinor/fusion-log
```

也可以使用：`pnpm add @equinor/fusion-log`、`yarn add @equinor/fusion-log`、`bun add @equinor/fusion-log`

## README

# @equinor/组合-log

用于Fusion Framework应用程序的结构化、分级过滤的伐木设施.

`@equinor/fusion-log` 给您一个薄薄的,RxJS后置的伐木抽象,并配有现成的控制台执行和帮助从环境变量中解析日志级别. 当您需要一致的、可配置的模块日志输出时使用它 .

## 密钥导出

| 导出 | 仁爱 | 目的 |
| --- | --- | --- |
| `ConsoleLogger` | 类 | 有标题前缀和子搜索器支持的颜色编码控制台记录器. |
| `Logger` | 摘要类 | 建自定义日志目的地时要扩展的基础类. |
| `ILogger` | 接口 | 每个伐木工都满足了合同要求——依赖性注射. |
| `LogLevel` | 数字 | 发热常数( E)`None`, (中文(简体) ), `Error`, (中文(简体) ), `Warning`, (中文(简体) ), `Info`, (中文(简体) ), `Debug`) (中文(简体) ). |
| `defaultLogLevel` | 常数 | 启动时解决的级别 `FUSION_LOG_LEVEL`。 。 。 . |
| `resolveLogLevel` | 函数 | 将字符串或数字分析为类型安全 `LogLevel`。 。 。 . |

## 快速启动

```typescript
import { ConsoleLogger, LogLevel } from '@equinor/fusion-log';

const logger = new ConsoleLogger('MyApp');
logger.level = LogLevel.Debug;

logger.debug('bootstrapping modules…');
logger.info('application ready');
logger.warn('deprecated API called');
logger.error('failed to fetch config', err);
```

## 日志级别

更高的数值是更动词. 设置 `logger.level` 升至某一级别使该级别成为可能 **及其下方所有级别**。 。 。 .

| 职等 | 数值 | 何时使用 |
| --- | --- | --- |
| `None` | 0 个 | 禁用所有日志 . |
| `Error` | 1个 | 操作失败了 呼叫者应该知道. |
| `Warning` | 2个 | 有些意外需要调查. |
| `Info` | 3个 | 例行确认(如"单元通"). |
| `Debug` | 页:1 | 口头诊断只促进发展. |

### 通过环境变量配置

设定 `FUSION_LOG_LEVEL` **在此之前** 您的捆绑者会编译代码, 这样默认的关卡会在构建时内入.

```sh
# .env
FUSION_LOG_LEVEL=4        # numeric
# or
FUSION_LOG_LEVEL=debug    # case-insensitive name
```

> \[尖叫声\] 确保 `FUSION_LOG_LEVEL` 在编译生产代码之前,设置在软件包管理器的环境变量中.

分辨率规则(在模块载荷时适用一次):

1.  若为 `FUSION_LOG_LEVEL` 设置和可解析 = 使用已解析的值.
2.  如果解析失败 `NODE_ENV === 'development'` - 倒车去 `Debug`。 。 。 .
3.  否则... 回到.. `Error`。 。 。 .
4.  如果变量未设为 + 默认为 `Error`。 。 。 .

您也可以在运行时解决一个关卡 `resolveLogLevel`数字 :

```typescript
import { resolveLogLevel } from '@equinor/fusion-log';

const level = resolveLogLevel(process.env.MY_LOG_LEVEL ?? 'error');
logger.level = level;
```

## 子标签

创建子日志来添加组件级上下文 。 孩子的头衔被前缀为父母的头衔,除非被推翻,日志级别会被继承.

```typescript
const router = logger.createSubLogger('Router');
router.debug('navigated to /dashboard');
// console output: "MyApp::Router  navigated to /dashboard"

const auth = logger.createSubLogger('Auth', undefined, LogLevel.Error);
auth.info('token refreshed'); // suppressed — level is Error
```

## 自定义记录器

### 扩展 `Logger`

子类 `Logger` 将日志条目传送到任何目的地,同时重新使用级别过滤和RxJS可观测管道.

```typescript
import { Logger, LogLevel, type ILogger } from '@equinor/fusion-log';

class RemoteLogger extends Logger {
  constructor(private readonly endpoint: string) {
    super();
    // subscribe to the filtered stream
    this.log.subscribe(({ lvl, msg }) => {
      fetch(this.endpoint, {
        method: 'POST',
        body: JSON.stringify({ level: lvl, messages: msg }),
      });
    });
  }

  protected _createMessage(_lvl: LogLevel, ...msg: unknown[]): unknown[] {
    return msg;
  }

  createSubLogger(title: string): ILogger {
    const sub = new RemoteLogger(this.endpoint);
    sub.level = this.level;
    return sub;
  }
}
```

### 执行 `ILogger`

如果你不需要RxJS管道 执行 `ILogger` 直接 :

```typescript
import { type ILogger, LogLevel, defaultLogLevel } from '@equinor/fusion-log';

class NoopLogger implements ILogger {
  level: LogLevel = defaultLogLevel;
  debug() {}
  info() {}
  warn() {}
  error() {}
  createSubLogger(): ILogger {
    return new NoopLogger();
  }
}
```

## 常见问题

### @equinor/fusion-log 是什么？

Fusion 前端开发日志工具

### 如何安装 @equinor/fusion-log？

在项目目录运行 npm install @equinor/fusion-log，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：rxjs（\>=7）、chalk（\>=5）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @equinor/fusion-log 支持 TypeScript 吗？

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

### @equinor/fusion-log 支持 ESM 还是 CommonJS？

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

### @equinor/fusion-log 可以商用吗？

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

### @equinor/fusion-log 的下载量有多少？

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

### @equinor/fusion-log 还在维护吗？

最新版本 2\.0\.8 发布于 2026/11/12（1 天前）；至今共发布 41 个版本，其中过去 12 个月发布了 16 个；首次发布于 2024/05/22。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

