aws-samples / aws-samples/serverless-full-stack-webapp-starter-kit

Lambda Powertools構造化ログ + ESLint no-console

Offen
#114 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
enhancement stale
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

Beitragsleitfaden öffnen

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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.