Logger Usage Guide
Import the Logger
import Logger from '@/src/utils/logger';
Basic Usage
Info Messages (development only)
Logger.info('User logged in successfully');
Logger.info('Processing request', { userId: 123 });
Debug Messages (development only)
Logger.debug('Auth state', { user, session });
Warnings (development only)
Logger.warn('API rate limit approaching', { remaining: 10 });
Errors (always logged, even in production)
Logger.error('Failed to fetch cases', error);
Logger.error('Failed to fetch cases', error, { userId: user.id, caseId: case.id });
Success Messages (development only)
Logger.success('Case created successfully', { caseId: newCase.id });
Service/API Logs (development only)
Logger.service('CaseService', 'fetchCases', { count: cases.length });
Logger.service('AuthService', 'login', { email: user.email });
Auth Logs (development only)
Logger.auth('User authenticated', { role: user.role });
Logger.auth('Token refreshed');
Scoped Logger
Create a scoped logger for consistent prefixes:
const log = Logger.scope('AuthContext');
log.info('Initializing auth');
log.error('Login failed', error);
log.success('Logout successful');
Migration Examples
Before (old console.log)
console.log('[Auth] Login successful');
console.error('[CaseService] Error fetching cases:', error);
console.log('[CaseService] Case created successfully:', newCase.id);
After (new Logger)
Logger.auth('Login successful');
Logger.error('[CaseService] Error fetching cases', error);
Logger.success('[CaseService] Case created successfully', { caseId: newCase.id });
// OR with scoped logger:
const log = Logger.scope('CaseService');
log.error('Error fetching cases', error);
log.success('Case created successfully', { caseId: newCase.id });
Production Behavior
- Correct way:
Logger.error()- Always logs (even in production) - Wrong:
Logger.info()- Only in development - Wrong:
Logger.debug()- Only in development - Wrong:
Logger.warn()- Only in development - Wrong:
Logger.success()- Only in development - Wrong:
Logger.service()- Only in development - Wrong:
Logger.auth()- Only in development
Future Integration
To add error tracking (Sentry, LogRocket, etc.), update the Logger.error() method in src/utils/logger.ts:
static error(message: string, error?: any, context?: Record<string, any>): void {
console.error(`[ERROR] ${message}`, error);
// Send to Sentry in production
if (!isDevelopment) {
Sentry.captureException(error, {
tags: { message },
extra: context,
});
}
}