aws-samples / aws-samples/serverless-full-stack-webapp-starter-kit
Lambda Powertools構造化ログ + ESLint no-console
- Vorherrschende Sprache
- TypeScript
- Sterne
- 229
- Forks
- 45
- Ø Merge
- 1 Min.
- Gemergte PRs (30 T.)
- 4
Beschreibung
## 概要
`console.log` / `console.error` を Lambda Powertools Logger に置換し、ESLint `no-console` ルールを追加する。
## 背景
現在 `webapp/src/` 内(`generated/` 除く)に19箇所の `console.*` 呼び出しがある。CloudWatch Logs Insights での構造化クエリが困難であり、ログレベルの制御もできない。
## 変更内容
### 1. `@aws-lambda-powertools/logger` の導入
```bash
pnpm add @aws-lambda-powertools/logger
```
`webapp/src/lib/logger.ts` を新規作成:
```typescript
import { Logger } from "@aws-lambda-powertools/logger";
export const logger = new Logger({ serviceName: "webapp" });
```
### 2. サーバーサイドの `console.*` を `logger` に置換
以下のファイルが対象:
| ファイル | 箇所数 |
|---------|--------|
| `src/lib/prisma.ts` | 1 |
| `src/lib/safe-action.ts` | 1 |
| `src/lib/events.ts` | 2 |
| `src/lib/amplifyServerUtils.ts` | 1 |
| `src/app/auth-callback/page.tsx` | 2 |
| `src/app/api/cognito-token/route.ts` | 1 |
| `src/jobs/migration-runner.ts` | 3 |
| `src/jobs/async-job-runner.ts` | 2 |
| `src/jobs/async-job/translate.ts` | 2 |
### 3. クライアントサイドの `console.*` は削除またはコメントで抑制
Lambda Powertools Logger はサーバーサイド(Node.js ランタイム)専用のため、以下のファイルでは使用できない:
- `src/app/(root)/components/CreateTodoForm.tsx`(`use client`)— デバッグログを削除
- `src/hooks/use-event-bus.ts`(クライアント hook)— デバッグログを削除、`console.error` は `// eslint-disable-next-line no-console` で許可
- `src/proxy.ts`(middleware)— `// eslint-disable-next-line no-console` で許可
### 4. ESLint `no-console` ルールの追加
`eslint.config.mjs` に追加:
```javascript
{
rules: {
"no-console": "error",
},
}
```
## 検証方法
- `npx eslint .` で `console.*` の使用がエラーになること(明示的に許可した箇所を除く)
- Lambda 実行時に CloudWatch Logs に構造化 JSON 形式でログが出力されること
Beitragsleitfaden
Rechercherichtung
Beginne mit den aufgeführten serverseitigen Dateien unter src/, den clientseitigen Ausnahmen und eslint.config.mjs; prüfe anschließend den vorgeschlagenen Einstiegspunkt src/lib/logger.ts. Führe npx eslint . aus, um die verbleibende Verwendung von console zu identifizieren. Als abgeschlossen gilt die Aufgabe, wenn die aufgeführten Server-Logs den Powertools-Logger verwenden, die Client-Ausnahmen wie angegeben behandelt werden und Lambda-Logs als strukturiertes JSON in CloudWatch erscheinen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- aws, eslint, node.js, typescript
- Bereich
- backend, observability, tooling
- Issue-Typ
- Refactoring
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Ruhig
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 72/100