@equinor/fusion-log

中文文档
2.0.8发布于 2026/11/12ISCTypeScriptES Module近 30 天下载 1.3万

Fusion 前端开发日志工具

中文使用文档
文档目录8 节
  1. 密钥导出
  2. 快速启动
  3. 日志级别
  4. 通过环境变量配置
  5. 子标签
  6. 自定义记录器
  7. 扩展 Logger
  8. 执行 ILogger

@equinor/组合-log

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

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

密钥导出

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

快速启动

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 升至某一级别使该级别成为可能 及其下方所有级别。 。 。 .

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

通过环境变量配置

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

# .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数字 :

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

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

子标签

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

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可观测管道.

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 直接 :

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 共发布 41 个版本,首次发布于 2024/05/22;过去 12 个月发布了 16 个版本。

版本发布日期距今
2.0.8latest2026/11/121 天前
2.0.8-next.0next2026/11/112 天前
2.0.72026/10/1727 天前
2.0.7-trusted-publishing-20261015-9dfe7602cd2a49a8a9df00d62c26e7304a82a85atrusted-publishing-202610152026/10/1629 天前
2.0.62026/10/121 个月前
2.0.52026/09/151 个月前

其他发布通道:apploader → 1.1.5-apploader-be21a6b60eb13eee8bf869e75002d8634e9c50a9,cli-search-index → 1.1.8-cli-search-index.0,msal-v5 → 1.1.8-msal-v5.0,trusted-publishing-20261015 → 2.0.7-trusted-publishing-20261015-9dfe7602cd2a49a8a9df00d62c26e7304a82a85a,next → 2.0.8-next.0。

关于 @equinor/fusion-log 的常见问题

@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 和提交记录判断。