

 [适用于 JavaScript 的 AWS SDK V3 API 参考指南](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/)详细描述了 适用于 JavaScript 的 AWS SDK 版本 3 (V3) 的所有 API 操作。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 记录 适用于 JavaScript 的 AWS SDK 通话
<a name="logging-sdk-calls"></a>

内置了 适用于 JavaScript 的 AWS SDK 记录器，因此您可以记录使用 SDK 进行的 API 调用。 JavaScript

要启用日志记录程序并在控制台打印日志条目，请使用可选的 `logger` 参数配置服务客户端。以下示例启用了客户端日志记录，同时忽略了跟踪和调试输出。

```
new S3Client({
  logger: {
    ...console,
    debug(...args) {},
    trace(...args) {},
  },
});
```

## 使用中间件记录请求
<a name="middleware-logger"></a>

 适用于 JavaScript 的 AWS SDK 使用中间件堆栈来控制操作调用的生命周期。堆栈中的每个中间件都会在对请求对象进行任何更改后调用下一个中间件。这也使调试堆栈中的问题变得更加容易，因为您可以准确地看到哪些被调用的中间件导致了错误。下面是使用中间件记录请求的示例：

```
const client = new DynamoDB({ region: "us-west-2" });

client.middlewareStack.add(
  (next, context) => async (args) => {
    console.log("AWS SDK context", context.clientName, context.commandName);
    console.log("AWS SDK request input", args.input);
    const result = await next(args);
    console.log("AWS SDK request output:", result.output);
    return result;
  },
  {
    name: "MyMiddleware",
    step: "build",
    override: true,
  }
);

await client.listTables({});
```

在上面的示例中，向 DynamoDB 客户端的中间件堆栈添加了一个中间件。第一个参数是一个函数，该函数接受 `next`（即堆栈中下一个待调用的中间件）和 `context`（一个对象，包含有关正在调用的操作的一些信息）。它会返回另一个函数，该函数接受 `args`（一个对象，包含传递给操作的参数）和请求，并返回使用 `args` 调用下一个中间件的结果。