import { Logger } from './logger.service';

/**
 * Exemplos de uso do Logger Service
 */

// Uso básico - método estático
Logger.log('Mensagem de log simples');
Logger.error('Erro ocorreu', 'MeuComponente');
Logger.warn('Aviso importante', 'MeuServiço');
Logger.debug('Informação de debug', 'Sistema');
Logger.verbose('Log verboso', 'API');
Logger.fatal('Erro fatal', 'Aplicação');

// Uso com instância - contexto específico
const logger = new Logger('MercadoLiveComponent');
logger.log('Carregando rotas do Mercado Livre');
logger.error('Erro ao buscar dados da API', 'stack trace aqui');
logger.warn('Performance degradada detectada');

// Uso com opções personalizadas
const customLogger = new Logger('DataService', {
  timestamp: true,
  environment: 'production',
  enableConsole: true,
  enableRemoteLogging: false
});

customLogger.log('Serviço iniciado com sucesso');

// Configuração de log levels
Logger.overrideLogger(['error', 'warn', 'log']); // Só mostra estes níveis
Logger.overrideLogger(false); // Desabilita todos os logs
Logger.overrideLogger(true);  // Habilita todos os logs

// Uso com buffer (útil para logs de inicialização)
Logger.attachBuffer();
Logger.log('Este log será armazenado no buffer');
Logger.error('Este erro também será armazenado');
Logger.detachBuffer(); // Flush todos os logs do buffer

// Verificar se um nível está habilitado
if (Logger.isLevelEnabled('debug')) {
  const expensiveDebugInfo = calculateDebugInfo();
  Logger.debug('Debug info:', expensiveDebugInfo);
}

// Função auxiliar para exemplo
function calculateDebugInfo() {
  return { memory: 'info', performance: 'metrics' };
} 