@aws-blocks/bb-logger

中文文档
0.3.0发布于 2026/11/02Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 6.6万

结构化记录,采用一致的JSON格式、日志级别和背景元数据.

中文使用文档
文档目录14 节
  1. 何时使用
  2. 不使用时
  3. 快速启动
  4. API 密码
  5. 构造器
  6. 方法
  7. 日志条目格式
  8. 儿童伐木者
  9. 日志级别
  10. 对象处理出错
  11. 序列安全
  12. 保留(生产)
  13. 地方发展
  14. 错误

@ aws- blocks/ bb- logger (缩写)

结构化记录,采用一致的JSON格式、日志级别和背景元数据.

设计与模拟等价细节 : 设计

何时使用

  • 您需要结构化且可查询的应用程序日志
  • 您想要在您的后端显示一致的日志格式
  • 您需要请求扫描的带有相关标识的日志
  • 您需要不修改代码的日志级别过滤

不使用时

  • 用于一段时间内的数值测量 − 使用 Metrics
  • 用于分发的追查请求 Tracing

快速启动

import { Scope } from '@aws-blocks/core';
import { Logger } from '@aws-blocks/bb-logger';

const scope = new Scope('my-app');
const log = new Logger(scope, 'app');

log.info('Server started', { port: 3000 });
log.warn('Slow query', { durationMs: 1500 });
log.error('Request failed', { err: new Error('timeout') });

API 密码

构造器

new Logger(scope: ScopeParent, id: string, options?: LoggingOptions)

选项 :

  • level 最低对数水平'debug' | 'info' | 'warn' | 'error') (中文(简体) ). 默认 : 'info'。 。 。 .
  • defaultContext ——每个日志条目包含字段.

日志保存不是一个 Logger 选项——它是一个计算级别设置(参见 保留 页:1.

方法

log.debug(message: string, context?: Record<string, unknown>): void
log.info(message: string, context?: Record<string, unknown>): void
log.warn(message: string, context?: Record<string, unknown>): void
log.error(message: string, context?: Record<string, unknown>): void
log.child(context: Record<string, unknown>): ChildLogger

所有日志方法都是 同步 (无需等待).

日志条目格式

每个日志条目都是写为 stdout(或错误的 stderr)的 JSON 对象 :

{
  "level": "info",
  "message": "User logged in",
  "timestamp": "2024-01-15T10:30:00.000Z",
  "logger": "app",
  "userId": "user-123"
}

儿童伐木者

创建继承上下文的请求范围日志 :

const requestLog = log.child({ requestId: 'req-abc', userId: 'u-123' });
requestLog.info('Processing request');
// Output includes requestId and userId automatically

儿童可以筑巢:

const dbLog = requestLog.child({ component: 'database' });
dbLog.warn('Slow query', { table: 'users', durationMs: 500 });

日志级别

  1. 构造器 level 选项
  2. 默认 : 'info'

设置水平每 Logger 通过 level 选项。 没有 LOG_LEVEL 环境 var-log level是运行时的构造-时间选择.

对象处理出错

上下文中通过的错误实例会自动提取 :

try {
  await doSomething();
} catch (err) {
  log.error('Operation failed', { err });
  // err is serialized as { name, message, stack }
}

序列安全

记录员处理边缘案件时优雅:

  • 通知参考 改为: "[Circular]"
  • 大内值 → 转换为字符串
  • 函数/符号 改为: "[unserializable]"
  • 上下文错误 − 提取到 { name, message, stack }

保留(生产)

记录总是在进行,保留是一个计算级设置,而不是一个 Logger 选项. 每一次计算都会捕捉到它处理器的积分到它自己的"云表"日志 组,该组带有全堆积默认保留(defaults.logRetention —— 说 在沙盒里呆一周,生产一年).

要更改保留, 设置 logRetention 在堆放层上 defaults (适用 到每个计算器的处理日志组 :

import { BlocksPresets } from '@aws-blocks/core/cdk';
import { RetentionDays } from 'aws-cdk-lib/aws-logs';

// In your aws-blocks backend, override the preset's logRetention:
defaults: { ...BlocksPresets.production, logRetention: RetentionDays.ONE_MONTH };

A 类 Logger 不再重新配置保留——计算拥有单曲, 框架拥有的处理器日志组。 按计算留存额(a) logRetention 道具 在计算时)与公共计算配置表面相接而来 这么说吧, defaults.logRetention 是保留键.

地方发展

当地 dev(npm run dev),"Logger BB:"(英语:Logger BB:

  • 将结构化的 JSON 写入 stdout/ stderr (与生产相同)
  • 不将日志粘入磁盘
  • 不在其中创建任何文件 .bb-data/
  • 保留没有局部效果( 它是一个只用云, 计算级别设置)
  • 日志级别来自 Logger是因为 level 选项(默认) 'info'(中文(简体) )

错误

import { LoggingErrors } from '@aws-blocks/bb-logger';

LoggingErrors.SerializationFailed // 'SerializationFailedException'

此错误在上下文时用作已退化日志条目中的标记 序列化失败( 不扔给消费者) .

版本与发布记录

@aws-blocks/bb-logger 共发布 14 个版本,首次发布于 2026/06/16;过去 12 个月发布了 14 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.3.0latest2026/11/025 天前
0.2.22026/10/1622 天前
0.0.0-canary.esql-canary.c93c81b.1791235863canary-esql-canary2026/10/061 个月前
0.2.12026/10/051 个月前
0.0.0-canary.esql-canary.f7f39ac.17909891272026/10/031 个月前
0.0.0-canary.ci-publish-canary-npm.f53dfdc.1790988617canary-ci-publish-canary-npm2026/10/031 个月前

关于 @aws-blocks/bb-logger 的常见问题

@aws-blocks/bb-logger 是什么?

结构化记录,采用一致的JSON格式、日志级别和背景元数据.

如何安装 @aws-blocks/bb-logger?

在项目目录运行 npm install @aws-blocks/bb-logger,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:constructs(^10.6.0)、aws-cdk-lib(^2.257.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@aws-blocks/bb-logger 支持 TypeScript 吗?

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

@aws-blocks/bb-logger 支持 ESM 还是 CommonJS?

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

@aws-blocks/bb-logger 可以商用吗?

@aws-blocks/bb-logger 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aws-blocks/bb-logger 的下载量有多少?

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

@aws-blocks/bb-logger 还在维护吗?

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