# @crowlog/logger 中文文档

规范地址：https://npmcn.com/package/%40crowlog/logger/

版本：2\.2\.2
npm 元数据更新时间：2026-01-04T13:29:35.201Z
中文译文更新时间：2026-11-11T01:59:32.500Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40crowlog/logger
原文对照：https://npmcn.com/package/%40crowlog/logger/?lang=original
项目主页：https://crowlog.dev/
源码仓库：https://github.com/CorentinTh/crowlog

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

- 包体积（解压后）：23.9 kB，5 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.0\.0
- 运行依赖：0 个
- 首次发布：2025-02-06T23:15:20.656Z
- 最新版本发布：2026-01-04T13:29:34.847Z
- 近 30 天下载量：3189（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：13（近 12 个月 4 个）

## 中文简介

超轻量级,零依赖性,任何JavaScript环境的可扩展日志库. 在Node.js,浏览器,和边缘运行时间工作.

## 安装

```sh
npm install @crowlog/logger
```

也可以使用：`pnpm add @crowlog/logger`、`yarn add @crowlog/logger`、`bun add @crowlog/logger`

## README

![Header banner](https://github.com/CorentinTh/crowlog/blob/main/apps/docs/src/public/logo-dark.svg)

# Crowlog - 可扩展 JS 日志库

Crowlog是一个简单,轻量级,零依赖性,以及任何JavaScript环境的可扩展日志库.

[文档](https://crowlog.dev/)   二. 支助   [GitHub 图像](https://github.com/CorentinTh/crowlog)   二. 支助   [国家预防机制](https://www.npmjs.com/package/@crowlog/logger)

## 特征

-   **超轻重量** - Crowlog非常轻重(小于 1kB 微小于 + gziped,见 [比较](https://npmcn.com/package/%40crowlog/logger/#readme-comparison)) (中文(简体) ).
-   **零依赖关系** 没有运行时间依赖,只是纯JavaScript.
-   **可扩展** - Crowlog被设计为可扩展的,因此可以将自己的传输和插件加入其中.
-   **简单** - Crowlog的设计简单易用.
-   **完全输入** – Crowlog 已完全输入,所以在使用时可以自动完成并输入安全.
-   **任何环境** - Crowlog在任何环境下工作,包括Node.js,浏览器,和边缘.
-   **测试友好** - Crowlog是设计为测试友好的,因此可以方便地用内移来测试你的日志.
-   **有一点意见** - Crowlog被设计成稍有见解,因此它有一个默认的传输和一些插件.
-   **漂亮的日志** - 说吧 [Crowlog 漂亮的日志命令](https://github.com/CorentinTh/crowlog/tree/main/packages/pretty) 以更可读的格式显示日志.

## 安装

```bash
# pnpm
pnpm install @crowlog/logger

# npm
npm install @crowlog/logger

# yarn
yarn add @crowlog/logger
```

## 使用量

基本用途:

```typescript
import { createLogger } from '@crowlog/logger';

const logger = createLogger({ namespace: 'my-app' });

logger.info('Hello world');
logger.error({ error: new Error('...') }, 'Something went wrong');
```

> \[注\] 日志界面要么是一个单字符串消息,要么是一个数据对象和一个消息字符串tuple.
> 
> ```typescript
> logger.info('Hello world');
> logger.info({ foo: 'bar' }, 'Hello world');
> ```

### 方法

Crowlog日志提供了4个不同的记录方法: `debug`, (中文(简体) ), `info`, (中文(简体) ), `warn`,以及 `error`。 。 。 .

```typescript
logger.debug(/* ... */);
logger.info(/* ... */);
logger.warn(/* ... */);
logger.error(/* ... */);
```

### 儿童伐木工和工厂

Crowlog 日志提供 `createChildLogger` 用于创建继承父日志配置的儿童日志的方法.

```typescript
import { createLogger } from '@crowlog/logger';

const logger = createLogger({ namespace: 'my-app' });
const childLogger = logger.createChildLogger({ namespace: 'child' });
```

或者,你可以使用 `createLoggerFactory` 用于创建配置相同的儿童日志.

```typescript
import { createLoggerFactory } from '@crowlog/logger';

const createLogger = createLoggerFactory({ transports: /* ... */, plugins: /* ... */ });
const logger = createLogger({ namespace: 'child' });
```

## 运输

发送日志的运输控制。 默认情况下, Crowlog 使用 `stdout` 运输(输出JSON至控制台).

```typescript
import { createLogger, createStdoutLoggerTransport } from '@crowlog/logger';

// Customize serialization
const logger = createLogger({
  namespace: 'my-app',
  transports: [
    createStdoutLoggerTransport({
      serialize: ({ level, message }) => `[${level}] ${message}`
    })
  ]
});
```

在测试时,使用内移:

```typescript
import { createInMemoryLoggerTransport } from '@crowlog/logger';

const inMemoryTransport = createInMemoryLoggerTransport();
const logger = createLogger({
  namespace: 'my-app',
  transports: [inMemoryTransport]
});

logger.info('Test log');
const logs = inMemoryTransport.getLogs({ excludeTimestampMs: true });
```

见 [完整文档](https://crowlog.dev/transports) 详细介绍运输方式和如何创建定制.

## 插件

插件将日志功能扩展至过滤、编辑和上下文管理.

### 过滤插件

控制日志到达的传输 :

```typescript
import { createLogger, createFilterPlugin } from '@crowlog/logger';

const logger = createLogger({
  namespace: 'my-app',
  plugins: [
    createFilterPlugin({
      minLevel: 'info',  // Only info and above
      excludedNamespaces: ['debug-utils']  // Exclude specific namespaces
    })
  ]
});
```

### 编辑插件

自动隐藏敏感数据 :

```typescript
import { createRedactPlugin } from '@crowlog/logger';

const logger = createLogger({
  namespace: 'my-app',
  plugins: [
    createRedactPlugin({
      paths: ['password', 'apiKey', 'user.email']
    })
  ]
});

logger.info({ password: 'secret', username: 'alice' }, 'Login');
// Output: { password: '[redacted]', username: 'alice' }
```

### 全球背景插件

在所有日志中添加全应用程序上下文 :

```typescript
import { createGlobalLogContextPlugin } from '@crowlog/logger';

const { globalContextPlugin, setGlobalLogContext } = createGlobalLogContextPlugin();

const logger = createLogger({
  namespace: 'my-app',
  plugins: [globalContextPlugin]
});

setGlobalLogContext({ environment: 'production', version: '1.0.0' });
logger.info('Started'); // Includes environment and version
```

### Async 上下文插件

添加请求范围上下文( 需要) `async_hooks` 支持:

```typescript
import { createAsyncContextPlugin, wrapWithLoggerContext } from '@crowlog/async-context-plugin';

const logger = createLogger({
  namespace: 'my-app',
  plugins: [createAsyncContextPlugin()]
});

wrapWithLoggerContext({ requestId: '123' }, () => {
  logger.info('Processing'); // Includes requestId
});
```

见 [完整文档](https://crowlog.dev/plugins) 关于插件和如何创建自定义插件的更多细节.

## 漂亮的日志

格式化 JSON 开发日志 `@crowlog/pretty`数字 :

```bash
node index.js | npx crowlog-pretty
```

![log-screenshot](https://npmcn.com/package/%40crowlog/logger/.github/pretty-screenshots.png)

见 [漂亮的伐木指南](https://crowlog.dev/guides/pretty-logging) 更多细节.

## 测试

使用内嵌运算在测试中捕获日志, 或新日志完全禁用日志 :

```typescript
import { createNoopLogger } from '@crowlog/logger';

// No logs will be produced
const result = doSomething({ logger: createNoopLogger() });
```

见 [测试指南](https://crowlog.dev/guides/testing-with-crowlog) 更多细节.

## 比较

| 图书馆 | 运行时间依赖关系 | 捆绑大小 |
| --- | --- | --- |
| @crowlog/logger@ 1.0.0 | 0 依赖关系 | 1.3kB(674B 精密化+克齐普) [来源](https://bundlephobia.com/package/@crowlog/logger@1.0.0) |
| [皮诺@ 9.6.0](mailto:pino@9.6.0) | 11个依赖关系 | 7.5kB (2.9kb 精密度+克齐普) [来源](https://bundlephobia.com/package/pino@9.6.0) |
| [温斯通@ 3.1.7](mailto:winston@3.17.0) | 11个依赖关系 | 147.9kB(37.4kB 精密化+克齐普) [来源](https://bundlephobia.com/package/winston@3.17.0) |
| [包扬@1.8.15](mailto:bunyan@1.8.15) | 19个依赖关系 | 15.7kB(5.6kB 变焦+克齐普) [来源](https://bundlephobia.com/package/bunyan@1.8.15) |

## 许可证

这个项目根据麻省理工学院的许可证获得许可。 见 [自由主义](https://npmcn.com/package/%40crowlog/logger/LICENSE) 文档以获取更多信息.

## 贷项

这个项目由 . . [科伦丁·托马斯塞特](https://corentin.tech/)。 。 。 . 如果你认为这个项目有帮助,请考虑 [支持我的工作](https://buymeacoffee.com/cthmsst)。 。 。 .

图标是 [乌鸦四舍五入](https://icones.js.org/collection/all?icon=material-symbols:raven-rounded) 从 [材料符号](https://fonts.google.com/icons)。 。 。 .

## 常见问题

### @crowlog/logger 是什么？

超轻量级,零依赖性,任何JavaScript环境的可扩展日志库\. 在Node\.js,浏览器,和边缘运行时间工作\.

### 如何安装 @crowlog/logger？

在项目目录运行 npm install @crowlog/logger，或使用 pnpm add / yarn add / bun add。

### @crowlog/logger 支持 TypeScript 吗？

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

### @crowlog/logger 支持 ESM 还是 CommonJS？

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

### @crowlog/logger 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=22\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @crowlog/logger 可以商用吗？

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

### @crowlog/logger 的下载量有多少？

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

### @crowlog/logger 还在维护吗？

最新版本 2\.2\.2 发布于 2026/01/04（10 个月前）；至今共发布 13 个版本，其中过去 12 个月发布了 4 个；首次发布于 2025/02/07。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

