refactor(logging): replace console.error in api-response with logger
This commit is contained in:
@@ -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<T>` 对齐。
|
||||
*/
|
||||
@@ -143,13 +146,13 @@ export function apiFromAction<T>(
|
||||
* - 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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user