Refactor error logging across the application to use a centralized logger

- Introduced a new logger utility (`logError`) to standardize error logging.
- Replaced all instances of `console.error` with `logError` in various API routes and libraries.
- Enhanced error logging to sanitize sensitive information, particularly for Prisma and Stripe errors.
- Ensured consistent error handling and logging practices throughout the codebase.
This commit is contained in:
Yusuf İpek
2026-04-10 21:10:09 +03:00
parent 07f7b6fb02
commit 8014fc3986
60 changed files with 235 additions and 115 deletions
+2 -1
View File
@@ -1,5 +1,6 @@
import { apiErrors } from '@/lib/api-response';
import { proxyR2MediaObject } from '@/lib/r2-media-proxy';
import { logError } from '@/lib/logger';
// Only allow UUID filenames with safe extensions
const SAFE_FILENAME = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\.[a-z0-9]+$/i;
@@ -39,7 +40,7 @@ export async function GET(
internalErrorMessage: 'Failed to retrieve audio',
});
} catch (error: unknown) {
console.error('Error serving audio:', error);
logError('Error serving audio:', error);
return apiErrors.internalError('Failed to retrieve audio');
}
}
+2 -1
View File
@@ -13,6 +13,7 @@ import {
enforceGuestUploadQuota,
verifyGuestUploadToken,
} from '@/lib/guest-upload-token';
import { logError } from '@/lib/logger';
const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB
const MAX_MULTIPART_BODY_SIZE = MAX_FILE_SIZE + (512 * 1024); // file + multipart overhead
@@ -212,7 +213,7 @@ export async function POST(request: NextRequest) {
const response = successResponse({ url: voiceUrl }, 201);
return withCacheControl(response, 'private, no-store');
} catch (error) {
console.error('Error uploading audio:', error);
logError('Error uploading audio:', error);
return apiErrors.internalError('Failed to upload audio');
}
}
+2 -1
View File
@@ -1,5 +1,6 @@
import { apiErrors } from '@/lib/api-response';
import { proxyR2MediaObject } from '@/lib/r2-media-proxy';
import { logError } from '@/lib/logger';
// Only allow UUID filenames with safe extensions
const SAFE_FILENAME = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\.[a-z0-9]+$/i;
@@ -41,7 +42,7 @@ export async function GET(
internalErrorMessage: 'Failed to retrieve image',
});
} catch (error: unknown) {
console.error('Error serving image:', error);
logError('Error serving image:', error);
return apiErrors.internalError('Failed to retrieve image');
}
}
+2 -1
View File
@@ -19,6 +19,7 @@ import {
enforceGuestUploadQuota,
verifyGuestUploadToken,
} from '@/lib/guest-upload-token';
import { logError } from '@/lib/logger';
const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB
const MAX_MULTIPART_BODY_SIZE = MAX_FILE_SIZE + (512 * 1024); // file + multipart overhead
@@ -150,7 +151,7 @@ export async function POST(request: NextRequest) {
const response = successResponse({ url: imageUrl }, 201);
return withCacheControl(response, 'public, max-age=31536000, immutable');
} catch (error) {
console.error('Error uploading image:', error);
logError('Error uploading image:', error);
return apiErrors.internalError('Failed to upload image');
}
}