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,
    });
  }
}