# @5app/logger 中文文档

规范地址：https://npmcn.com/package/%405app/logger/

版本：2\.4\.0
npm 元数据更新时间：2026-08-05T13:11:09.816Z
中文译文更新时间：2026-11-06T21:04:56.804Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%405app/logger
原文对照：https://npmcn.com/package/%405app/logger/?lang=original
项目主页：https://github.com/5app/logger#readme
源码仓库：https://github.com/5app/logger

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

- 包体积（解压后）：10.7 kB，7 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- 运行依赖：1 个
- 首次发布：2019-09-10T15:52:31.243Z
- 最新版本发布：2026-08-05T13:11:09.508Z
- 近 30 天下载量：2333（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：12（近 12 个月 1 个）

## 中文简介

5app 微服务中使用的简单记录器

## 安装

```sh
npm install @5app/logger
```

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

## README

# 日志

> 在 dev 上输出 json 的简单控制台记录器

## 使用量

```sh
npm install --save @5app/logger
```

```javascript
const logger = require('@5app/logger');

logger.info('An email was sent', {
  email: 'customer@5app.com',
  template: 'template1',
});

logger.error(new Error('Unknown playlist 123'));
```

## 选项

日志可以选择使用下列环境变量进行自定义:

-   `LOGS_FORMAT`: 如果设置为 `json`,日志器会以json格式记录消息,而不是漂亮的消息(默认行为).
-   `LOGS_LEVEL`: 最小日志级别, 默认为 `debug`。接受值为 `'debug'`, (中文(简体) ), `'info'`, (中文(简体) ), `'warn'`,以及 `'error'`
-   `TAG`: 释放要添加到日志信件中的标记( 如 docker 图像标记)

## 日志水平

日志级别是(从低到高优先级): `'debug'`, (中文(简体) ), `'info'`, (中文(简体) ), `'warn'`,以及 `'error'`。 。 。 . 伐木机提供伐木功能的签名如下: `logger.<level>(message, objectOrError)`

以下是如何使用日志的例子:

```javascript
logger.error('An error happened', new ApiError('The api call failed', 404)); // will log the message, the error message, the stack trace, and the statusCode error property
logger.warn('Be warned', {a: 1, b: Date.now(), c: 'some string'});
logger.info('An event happened', {a: 1, b: Date.now(), c: 'some string'});
logger.debug('A minor operation', {a: 1, b: Date.now(), c: 'some string'});
```

## 黑警报

`logger.slackAlert([level], message, ...)` 日志, 如上面的正则函数, 但预开 `slackAlert` 并添加随机 `slackAlertId` (通过) [`crypto.randomUUID()`](https://nodejs.org/api/crypto.html#cryptorandomuuidoptions)用于记录的上下文,即使没有提供上下文,也生成上下文. `level` 是可选的,默认为 `'error'`当它必须是 `'debug'`, (中文(简体) ), `'info'`, (中文(简体) ), `'warn'`,或 `'error'`。任何剩余的论据将逐一转交 `logger.<level>`,因此它们遵循该级别本身的签名(例如:. `context` 财务报告和审定财务报表 `errorObject` 页:1 `'error'`刚刚 `context` (对他人而言).

这是用来连接一个日志传输管道(例如,一个记录处理器,用于监视 `slackAlert` 前缀)将信件发送到Slack,使用 `slackAlertId` 将Slack站点与原日志线连接起来,同时仍按规定的严重程度进行记录.

```javascript
logger.slackAlert('Payment provider is down', error); // level defaults to "error"
logger.slackAlert('warn', 'Queue depth is high', {depth: 1200}); // context is merged with {slackAlertId: '...'}
logger.slackAlert('warn', 'Queue depth is high'); // context defaults to {slackAlertId: '...'}
logger.slackAlert('error', 'Payment provider is down', {provider: 'stripe'}, error);
logger.slackAlert('error', 'Payment provider is down', error); // the (message, errorObject) shorthand also works; slackAlertId is added alongside the error details
```

注:因为 `level` 通过检查第一个参数是否是一个已知的关卡字符串,通过一个无法识别的关卡(例如,一个像 `'eror'`这不是一个错误——它被默默地读作 `message` 改为: `level` 默认为 `'error'`。 。 。 .

## 动态获取上下文

除了提供上下文对象外,您还可以使用 `logger.addContext` 以提供一个函数,该函数将调用每个日志获取上下文对象.

如果您在使用, 这会有所帮助 [自动启动( h)](https://nodejs.org/docs/latest/api/async_hooks.html) 或者说 [cls-按键](https://www.npmjs.com/package/cls-hooked) 来存储类似线程本地存储的元数据.

例如,你可以做以下工作,而无需明确通过 `correlationId` 到每个日志 :

```javascript
const asyncLocalStorage = new AsyncLocalStorage();

expressApp.use((req, res, next) {
  const correlationId = req.get('X-Correlation-Id') || uuidV4();
  asyncLocalStorage.run({correlationId}, () => next());
});

logger.addContext(() => asyncLocalStorage.getStore());
logger.info('User profile updated', {userId: 1234});
```

输出会像:

```json
{"level":"info","timestamp":"2021-02-23T17:55:43.011Z","correlationId":"12bf5b37-e0b8-56e0-8dcf-dc8c4aefc123","userId":1234}
```

## 常见问题

### @5app/logger 是什么？

5app 微服务中使用的简单记录器

### 如何安装 @5app/logger？

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

### @5app/logger 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/5app\_\_logger 是否存在。

### @5app/logger 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @5app/logger 可以商用吗？

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

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

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

### @5app/logger 还在维护吗？

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

