Implement structured logging for API routes (P3.7)
Replace console.error with pino structured logger across API routes and add key event logging per observability spec: - Auth failure (warn): reason - Period logged (info): userId, date - Override toggled (info): userId, override, enabled - Decision calculated (info): userId, decision, reason - Error events (error): err object with stack trace Files updated: - auth-middleware.ts: Added structured logging for auth failures - cycle/period/route.ts: Added Period logged event + error logging - calendar/[userId]/[token].ics/route.ts: Replaced console.error - overrides/route.ts: Added Override toggled events - today/route.ts: Added Decision calculated event Tests: 720 passing (added 3 new structured logging tests) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,7 @@ import { NextResponse } from "next/server";
|
||||
|
||||
import { withAuth } from "@/lib/auth-middleware";
|
||||
import { getCycleDay, getPhase } from "@/lib/cycle";
|
||||
import { logger } from "@/lib/logger";
|
||||
import { createPocketBaseClient } from "@/lib/pocketbase";
|
||||
|
||||
interface PeriodLogRequest {
|
||||
@@ -80,6 +81,9 @@ export const POST = withAuth(async (request: NextRequest, user) => {
|
||||
const cycleDay = getCycleDay(lastPeriodDate, user.cycleLength, new Date());
|
||||
const phase = getPhase(cycleDay);
|
||||
|
||||
// Log successful period logging per observability spec
|
||||
logger.info({ userId: user.id, date: body.startDate }, "Period logged");
|
||||
|
||||
return NextResponse.json({
|
||||
message: "Period start date logged successfully",
|
||||
lastPeriodDate: body.startDate,
|
||||
@@ -87,7 +91,7 @@ export const POST = withAuth(async (request: NextRequest, user) => {
|
||||
phase,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("Period logging error:", error);
|
||||
logger.error({ err: error, userId: user.id }, "Period logging error");
|
||||
return NextResponse.json(
|
||||
{ error: "Failed to update period date" },
|
||||
{ status: 500 },
|
||||
|
||||
Reference in New Issue
Block a user