diff --git a/src/shared/lib/api-response.ts b/src/shared/lib/api-response.ts index 783e802..f30a748 100644 --- a/src/shared/lib/api-response.ts +++ b/src/shared/lib/api-response.ts @@ -18,8 +18,11 @@ import { NotFoundError, ValidationError, } from "@/shared/lib/action-utils" +import { createModuleLogger } from "@/shared/lib/logger" import type { ActionState } from "@/shared/types/action-state" +const log = createModuleLogger("api") + /** * 标准 API 响应体形状,与 `ActionState` 对齐。 */ @@ -143,13 +146,13 @@ export function apiFromAction( * - BusinessError / NotFoundError / ValidationError → 对应状态码 * - 其他 Error → 500 + 通用消息(不泄露内部细节) * - * 服务端日志通过 `console.error` 输出(仅未预期错误,已知业务错误不记录)。 + * 服务端日志通过 `logger.error` 输出(仅未预期错误,已知业务错误不记录)。 */ export function handleApiError( error: unknown, init?: { headers?: HeadersInit } ): NextResponse { - // 已知业务错误:消息可安全暴露,无需 console.error + // 已知业务错误:消息可安全暴露,无需 log.error if (error instanceof PermissionDeniedError || error instanceof BusinessError) { return apiError( error instanceof PermissionDeniedError ? error.message : error.message, @@ -161,9 +164,9 @@ export function handleApiError( // 未预期错误:记录服务端日志,不暴露细节 if (error instanceof Error) { - console.error("[ApiError]", error.name, error.message, error.stack) + log.error({ err: error }, "API request failed") } else { - console.error("[ApiError] Unknown error:", error) + log.error({ err: error }, "Unknown API error") } return apiError("请求失败,请稍后重试", 500, "unexpected", init) }