概要
console.log / console.error を Lambda Powertools Logger に置換し、ESLint no-console ルールを追加する。
背景
現在 webapp/src/ 内(generated/ 除く)に19箇所の console.* 呼び出しがある。CloudWatch Logs Insights での構造化クエリが困難であり、ログレベルの制御もできない。
変更内容
1. @aws-lambda-powertools/logger の導入
pnpm add @aws-lambda-powertools/logger
webapp/src/lib/logger.ts を新規作成:
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 に追加:
{
rules: {
"no-console": "error",
},
}
検証方法
npx eslint . で console.* の使用がエラーになること(明示的に許可した箇所を除く)
- Lambda 実行時に CloudWatch Logs に構造化 JSON 形式でログが出力されること
概要
console.log/console.errorを Lambda Powertools Logger に置換し、ESLintno-consoleルールを追加する。背景
現在
webapp/src/内(generated/除く)に19箇所のconsole.*呼び出しがある。CloudWatch Logs Insights での構造化クエリが困難であり、ログレベルの制御もできない。変更内容
1.
@aws-lambda-powertools/loggerの導入webapp/src/lib/logger.tsを新規作成:2. サーバーサイドの
console.*をloggerに置換以下のファイルが対象:
src/lib/prisma.tssrc/lib/safe-action.tssrc/lib/events.tssrc/lib/amplifyServerUtils.tssrc/app/auth-callback/page.tsxsrc/app/api/cognito-token/route.tssrc/jobs/migration-runner.tssrc/jobs/async-job-runner.tssrc/jobs/async-job/translate.ts3. クライアントサイドの
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に追加:検証方法
npx eslint .でconsole.*の使用がエラーになること(明示的に許可した箇所を除く)