refactor(logging): replace console.error in api-response with logger

This commit is contained in:
SpecialX
2026-07-07 12:06:36 +08:00
parent 2236eb36e7
commit a75fdcd60d

View File

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