performance-monitor-logger
Version:
Performance monitor logger for Angular applications
192 lines • 6.76 kB
TypeScript
/**
* 📊 SISTEMA DE LOGS DE PERFORMANCE
*
* Sistema completo de monitoramento de performance para aplicações Angular
* com feedback visual através de emojis e relatórios automáticos.
*
* Características:
* - 📈 Monitoramento em Tempo Real
* - 🟢🟡🔴 Classificação Visual por Performance
* - ⏰ Relatórios Automáticos após Inatividade
* - 📊 Análise Detalhada com Recomendações
* - 🛠️ API Pública para Controle Manual
*
* @author Pedro Henrique dos Santos Leuchs
* @version 1.0.19
* @since 2025-07-11
*/
export interface PerformanceStats {
count: number;
totalTime: number;
minTime: number;
maxTime: number;
customThresholds?: {
ok?: number;
lento?: number;
critico?: number;
};
}
export interface DynamicThresholds {
ok: number;
lento: number;
critico: number;
}
export declare class LogsPerformatico {
private monitoramentoAtivo;
private performanceTimers;
private performanceSummary;
private serviceName;
private httpRequests;
private functionContextStack;
constructor(serviceName?: string);
/**
* Registra requisição HTTP associando à função monitorada ativa (se houver)
* @param payload Dados da requisição
*/
registerHttpRequest(authReq: any, tempo: number, error?: boolean): void;
private extrairNomeDeSQL;
/**
* 🚀 Mensagem de boas-vindas do sistema
*/
showWelcomeMessage(): void;
/**
* ⏱️ Inicia cronômetro para uma operação
* @param operationName Nome da operação a ser monitorada
*/
startTimer(operationName: string): void;
/**
* 🏁 Finaliza cronômetro e exibe resultado com emoji
* @param operationName Nome da operação
* @param customMessage Mensagem customizada opcional (ex: para erros)
* @param customThresholds Thresholds customizados para esta operação específica
*/
endTimer(operationName: string, customMessage?: string, customThresholds?: {
ok?: number;
lento?: number;
critico?: number;
}): void;
/**
* 🎨 Determina status de performance baseado no tempo
* @param elapsedTime Tempo decorrido em milissegundos
* @param customThresholds Thresholds customizados para esta operação específica
* @param operationName Nome da operação (para calcular thresholds dinâmicos)
* @returns Objeto com emoji, status e cor
*/
private getPerformanceStatus;
/**
* 📈 Atualiza estatísticas de performance para o sumário
* @param operationName Nome da operação
* @param elapsedTime Tempo decorrido em milissegundos
* @param customThresholds Thresholds customizados para armazenar (opcional)
*/
private updatePerformanceSummary;
/**
* 📊 Exibe relatório resumido de todas as operações (compactado)
*/
showPerformanceSummary(showFullDetails?: boolean): void;
/**
* 📑 Exibe relatório detalhado de requisições HTTP agrupadas por função
*/
showHttpRequestsReport(): void;
/**
* 🔍 Gera análise detalhada de performance
*/
generateDetailedAnalysis(): void;
/**
* 📋 Categoriza operações por performance
* @returns Objeto com arrays de operações categorizadas
*/
private categorizeOperations;
/**
* 💡 Exibe recomendações baseadas na análise
* @param criticalOperations Array de operações críticas
* @param slowOperations Array de operações lentas
*/
private showRecommendations;
/**
* 📊 Exibe score de performance
* @param fastOperationsCount Número de operações rápidas
*/
private showPerformanceScore;
/**
* 📊 Método público para exibir relatório de performance
* Pode ser chamado no console do navegador para análise
*/
getPerformanceReport(): void;
/**
* 🧹 Método público para limpar dados de performance
* Útil para resetar estatísticas e começar nova análise
*/
resetPerformanceData(): void;
/**
* ⏰ Configura o delay para relatório por inatividade
* @param seconds Número de segundos de inatividade para mostrar relatório
*/
setInactivityDelay(seconds: number): void;
/**
* 🔇 Desabilita relatório automático por inatividade
*/
disableInactivityReport(): void;
/**
* ⚙️ Configura o threshold para relatório automático
* @param threshold Número de operações para mostrar relatório automaticamente
*/
setAutoReportThreshold(threshold: number): void;
/**
* 🔇 Desabilita relatório automático
*/
disableAutoReport(): void;
/**
* 📈 Obtém estatísticas resumidas sem exibir no console
* @returns Objeto com estatísticas de performance
*/
getStatistics(): {
totalOperations: number;
averageTime: number;
fastOperations: number;
slowOperations: number;
criticalOperations: number;
performanceScore: number;
};
/**
* 🎯 Obtém dados de uma operação específica
* @param operationName Nome da operação
* @returns Estatísticas da operação ou null se não encontrada
*/
getOperationStats(operationName: string): (PerformanceStats & {
httpCalls: string[];
}) | null;
/**
* 📋 Lista todas as operações monitoradas
* @returns Array com nomes das operações
*/
getMonitoredOperations(): string[];
/**
* 🔄 Verifica se há timers ativos
* @returns true se há timers em execução
*/
hasActiveTimers(): boolean;
/**
* 🗑️ Limpa apenas os timers ativos (não as estatísticas)
*/
clearActiveTimers(): void;
/**
* 💾 Exporta dados de performance para JSON
* @returns String JSON com todos os dados
*/
exportData(): string;
/**
* 🎯 Calcula thresholds dinâmicos baseados na quantidade de execuções
* @param executionCount Número de execuções da operação
* @returns Objeto com thresholds calculados dinamicamente
*/
private calculateDynamicThresholds;
injectMonitorButton(): void;
}
/**
* 🏭 Factory function para criar instância do LogsPerformatico
* @param serviceName Nome do serviço (para logs personalizados)
* @returns Nova instância de LogsPerformatico
*/
export declare function createPerformanceLogger(serviceName?: string): LogsPerformatico;
//# sourceMappingURL=log-performatico.d.ts.map