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
@@ -10,6 +10,7 @@ import {
extractAudioFileNameFromProxyUrl,
getVideoAssetAccessContext,
} from '@/lib/video-assets';
import { logError } from '@/lib/logger';
type RouteParams = { params: Promise<{ videoId: string; assetId: string }> };
type BunnySourcePreference = 'auto' | 'original' | 'compressed';
@@ -205,7 +206,7 @@ export async function GET(request: NextRequest, { params }: RouteParams) {
return withCacheControl(response, 'private, no-store');
} catch (error) {
console.error('Error downloading asset:', error);
logError('Error downloading asset:', error);
return apiErrors.internalError('Failed to download asset');
}
}
@@ -10,6 +10,7 @@ import {
canDeleteAssetForViewer,
getVideoAssetAccessContext,
} from '@/lib/video-assets';
import { logError } from '@/lib/logger';
type RouteParams = { params: Promise<{ videoId: string; assetId: string }> };
@@ -94,7 +95,7 @@ export async function DELETE(request: NextRequest, { params }: RouteParams) {
});
return withCacheControl(response, 'private, no-store');
} catch (error) {
console.error('Error deleting video asset:', error);
logError('Error deleting video asset:', error);
return apiErrors.internalError('Failed to delete asset');
}
}
@@ -13,6 +13,7 @@ import {
import { isBunnyUploadsFeatureEnabled } from '@/lib/feature-flags';
import { getShareSessionFromRequest } from '@/lib/share-session';
import { getVideoAssetAccessContext, SAFE_BUNNY_VIDEO_ID } from '@/lib/video-assets';
import { logError } from '@/lib/logger';
type RouteParams = { params: Promise<{ videoId: string }> };
@@ -58,7 +59,7 @@ export async function POST(request: NextRequest, { params }: RouteParams) {
});
if (!bunnyRes.ok) {
console.error('Failed to create Bunny Stream video asset', await bunnyRes.text());
logError('Failed to create Bunny Stream video asset', await bunnyRes.text());
return apiErrors.internalError('Failed to initialize Bunny upload');
}
@@ -103,7 +104,7 @@ export async function POST(request: NextRequest, { params }: RouteParams) {
});
return withCacheControl(response, 'private, no-store');
} catch (error) {
console.error('Error initializing Bunny asset upload:', error);
logError('Error initializing Bunny asset upload:', error);
return apiErrors.internalError('Failed to initialize asset upload');
}
}
@@ -157,7 +158,7 @@ export async function DELETE(request: NextRequest, { params }: RouteParams) {
const response = successResponse({ message: 'Pending upload cleaned up' });
return withCacheControl(response, 'private, no-store');
} catch (error) {
console.error('Error cleaning up Bunny asset upload:', error);
logError('Error cleaning up Bunny asset upload:', error);
return apiErrors.internalError('Failed to cleanup pending upload');
}
}
+3 -2
View File
@@ -24,6 +24,7 @@ import {
getVideoAssetAccessContext,
sanitizeAssetDisplayName,
} from '@/lib/video-assets';
import { logError } from '@/lib/logger';
type RouteParams = { params: Promise<{ videoId: string }> };
@@ -260,7 +261,7 @@ export async function GET(request: NextRequest, { params }: RouteParams) {
response.headers.set('ETag', etag);
return withCacheControl(response, 'private, no-cache');
} catch (error) {
console.error('Error fetching video assets:', error);
logError('Error fetching video assets:', error);
return apiErrors.internalError('Failed to fetch assets');
}
}
@@ -450,7 +451,7 @@ export async function POST(request: NextRequest, { params }: RouteParams) {
}
return withCacheControl(response, 'private, no-store');
} catch (error) {
console.error('Error creating video asset:', error);
logError('Error creating video asset:', error);
return apiErrors.internalError('Failed to create asset');
}
}