Spaces:
Sleeping
Sleeping
| # Sistema de Logging Avançado | |
| ## Visão Geral | |
| O sistema de logging avançado foi projetado para fornecer monitoramento abrangente e análise detalhada de todas as operações do sistema de análise financeira. Utiliza SQLite3 para armazenamento persistente e oferece uma interface web para visualização e análise dos logs. | |
| ## Arquitetura do Sistema | |
| ### Componentes Principais | |
| 1. **DatabaseLogger** (`src/core/database_logger.py`) | |
| - Gerenciador principal do sistema de logging | |
| - Conexão e operações com banco SQLite3 | |
| - Armazenamento estruturado de logs, métricas e eventos | |
| 2. **Decoradores de Logging** (`src/utils/logging_decorators.py`) | |
| - Decoradores para logging automático de funções | |
| - Gerenciador de contexto para blocos de código | |
| - Utilitários para logging rápido | |
| 3. **Visualizador de Logs** (`src/ui/log_viewer.py`) | |
| - Interface web para visualização de logs | |
| - Filtros avançados e busca | |
| - Estatísticas e gráficos | |
| - Exportação de dados | |
| ## Estrutura do Banco de Dados | |
| ### Tabela: logs | |
| ```sql | |
| CREATE TABLE logs ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| timestamp TEXT NOT NULL, | |
| level TEXT NOT NULL, | |
| category TEXT NOT NULL, | |
| message TEXT NOT NULL, | |
| function_name TEXT, | |
| file_name TEXT, | |
| line_number INTEGER, | |
| execution_time REAL, | |
| metadata TEXT, | |
| created_at DATETIME DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| ``` | |
| ### Tabela: performance_metrics | |
| ```sql | |
| CREATE TABLE performance_metrics ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| timestamp TEXT NOT NULL, | |
| metric_name TEXT NOT NULL, | |
| metric_value REAL NOT NULL, | |
| unit TEXT, | |
| category TEXT, | |
| metadata TEXT, | |
| created_at DATETIME DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| ``` | |
| ### Tabela: system_events | |
| ```sql | |
| CREATE TABLE system_events ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| timestamp TEXT NOT NULL, | |
| event_type TEXT NOT NULL, | |
| event_name TEXT NOT NULL, | |
| description TEXT, | |
| severity TEXT NOT NULL, | |
| metadata TEXT, | |
| created_at DATETIME DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| ``` | |
| ## Níveis de Log | |
| - **DEBUG**: Informações detalhadas para depuração | |
| - **INFO**: Informações gerais sobre operações | |
| - **WARNING**: Avisos sobre situações potencialmente problemáticas | |
| - **ERROR**: Erros que não impedem a execução | |
| - **CRITICAL**: Erros críticos que podem interromper o sistema | |
| ## Categorias de Log | |
| - **SYSTEM**: Eventos do sistema (inicialização, configuração) | |
| - **API**: Chamadas de API e integrações externas | |
| - **AI_MODEL**: Uso de modelos de IA e análises | |
| - **MARKET_ANALYSIS**: Análises de mercado e trading | |
| - **USER_INTERACTION**: Interações do usuário com a interface | |
| - **PERFORMANCE**: Métricas de performance e otimização | |
| - **SECURITY**: Eventos relacionados à segurança | |
| - **DATABASE**: Operações de banco de dados | |
| ## Uso dos Decoradores | |
| ### @log_execution | |
| ```python | |
| from src.utils.logging_decorators import log_execution | |
| from src.core.database_logger import LogCategory | |
| @log_execution(LogCategory.MARKET_ANALYSIS, log_performance=True) | |
| def analyze_market_data(data): | |
| # Sua função aqui | |
| return result | |
| ``` | |
| ### @log_api_call | |
| ```python | |
| from src.utils.logging_decorators import log_api_call | |
| @log_api_call("external_api") | |
| def call_external_service(params): | |
| # Chamada para API externa | |
| return response | |
| ``` | |
| ### @log_ai_model_usage | |
| ```python | |
| from src.utils.logging_decorators import log_ai_model_usage | |
| @log_ai_model_usage("sentiment_analysis") | |
| def analyze_sentiment(text): | |
| # Análise de sentimento | |
| return sentiment | |
| ``` | |
| ### Gerenciador de Contexto | |
| ```python | |
| from src.utils.logging_decorators import LoggingContext | |
| from src.core.database_logger import LogLevel, LogCategory | |
| with LoggingContext("Processamento de dados", LogLevel.INFO, LogCategory.SYSTEM): | |
| # Seu código aqui | |
| process_data() | |
| ``` | |
| ## Logging Rápido | |
| ```python | |
| from src.utils.logging_decorators import quick_log | |
| from src.core.database_logger import LogLevel, LogCategory | |
| # Log simples | |
| quick_log("Operação concluída", LogLevel.INFO, LogCategory.SYSTEM) | |
| # Log com metadados | |
| quick_log( | |
| "Análise finalizada", | |
| LogLevel.INFO, | |
| LogCategory.MARKET_ANALYSIS, | |
| metadata={'duration': 1.5, 'symbols': ['BTCUSDT', 'ETHUSDT']} | |
| ) | |
| ``` | |
| ## Interface de Visualização | |
| A interface web oferece: | |
| ### Funcionalidades Principais | |
| - **Visualização de Logs**: Tabela paginada com filtros | |
| - **Estatísticas**: Contadores por nível e categoria | |
| - **Gráficos**: Métricas de performance e timeline | |
| - **Busca**: Pesquisa por termos específicos | |
| - **Exportação**: CSV, JSON e HTML | |
| ### Filtros Disponíveis | |
| - **Nível de Log**: DEBUG, INFO, WARNING, ERROR, CRITICAL | |
| - **Categoria**: Todas as categorias disponíveis | |
| - **Período**: Últimas horas, dias ou intervalo personalizado | |
| - **Função**: Filtrar por nome da função | |
| - **Arquivo**: Filtrar por arquivo de origem | |
| ## Configuração e Inicialização | |
| ### Inicialização Básica | |
| ```python | |
| from src.core.database_logger import DatabaseLogger | |
| # Inicializar logger | |
| db_logger = DatabaseLogger('logs/application.db') | |
| # Log simples | |
| db_logger.log( | |
| level=LogLevel.INFO, | |
| category=LogCategory.SYSTEM, | |
| message="Sistema inicializado" | |
| ) | |
| ``` | |
| ### Configuração Avançada | |
| ```python | |
| # Log com metadados | |
| db_logger.log( | |
| level=LogLevel.INFO, | |
| category=LogCategory.API, | |
| message="Chamada API realizada", | |
| function_name="call_api", | |
| file_name="api_client.py", | |
| line_number=45, | |
| execution_time=0.250, | |
| metadata={'endpoint': '/market/data', 'status': 200} | |
| ) | |
| # Métrica de performance | |
| db_logger.log_performance_metric( | |
| metric_name="response_time", | |
| metric_value=0.150, | |
| unit="seconds", | |
| category="api_performance" | |
| ) | |
| # Evento do sistema | |
| db_logger.log_system_event( | |
| event_type="STARTUP", | |
| event_name="SERVICE_STARTED", | |
| description="Serviço de análise iniciado com sucesso", | |
| severity="INFO" | |
| ) | |
| ``` | |
| ## Manutenção e Limpeza | |
| ### Limpeza Automática | |
| ```python | |
| # Remover logs mais antigos que 30 dias | |
| db_logger.cleanup_old_logs(days=30) | |
| # Remover métricas mais antigas que 7 dias | |
| db_logger.cleanup_old_metrics(days=7) | |
| # Remover eventos mais antigos que 90 dias | |
| db_logger.cleanup_old_events(days=90) | |
| ``` | |
| ### Estatísticas do Sistema | |
| ```python | |
| # Obter estatísticas gerais | |
| stats = db_logger.get_log_statistics() | |
| print(f"Total de logs: {stats['total_logs']}") | |
| print(f"Logs por nível: {stats['by_level']}") | |
| print(f"Logs por categoria: {stats['by_category']}") | |
| ``` | |
| ## Monitoramento e Alertas | |
| ### Detecção de Problemas | |
| O sistema automaticamente monitora: | |
| - **Erros Críticos**: Logs de nível CRITICAL | |
| - **Taxa de Erros**: Proporção de logs ERROR/WARNING | |
| - **Performance**: Métricas de tempo de execução | |
| - **Disponibilidade**: Eventos de sistema | |
| ### Exemplo de Monitoramento | |
| ```python | |
| # Verificar logs de erro nas últimas 24 horas | |
| error_logs = db_logger.get_logs( | |
| level_filter="ERROR", | |
| hours_back=24 | |
| ) | |
| if len(error_logs) > 10: | |
| # Enviar alerta | |
| db_logger.log_system_event( | |
| event_type="ALERT", | |
| event_name="HIGH_ERROR_RATE", | |
| description=f"Taxa alta de erros detectada: {len(error_logs)} erros em 24h", | |
| severity="WARNING" | |
| ) | |
| ``` | |
| ## Integração com a Aplicação | |
| O sistema está totalmente integrado com: | |
| - **Análise de Sentimento**: Logs de uso de modelos IA | |
| - **Análise Técnica**: Métricas de performance | |
| - **API Calls**: Monitoramento de chamadas externas | |
| - **Interface Gradio**: Logs de interação do usuário | |
| - **Sistema Ensemble**: Logs de decisões de IA | |
| ## Boas Práticas | |
| 1. **Use níveis apropriados**: DEBUG para desenvolvimento, INFO para operações normais | |
| 2. **Inclua contexto**: Sempre adicione metadados relevantes | |
| 3. **Monitore performance**: Use métricas para identificar gargalos | |
| 4. **Mantenha limpo**: Configure limpeza automática de logs antigos | |
| 5. **Analise regularmente**: Use a interface para identificar padrões | |
| ## Troubleshooting | |
| ### Problemas Comuns | |
| 1. **Banco não inicializa** | |
| - Verificar permissões da pasta `logs/` | |
| - Verificar espaço em disco | |
| 2. **Performance lenta** | |
| - Executar limpeza de logs antigos | |
| - Verificar índices do banco | |
| 3. **Interface não carrega** | |
| - Verificar se o banco existe | |
| - Verificar logs de erro do sistema | |
| ### Comandos de Diagnóstico | |
| ```python | |
| # Verificar saúde do banco | |
| db_logger.get_database_info() | |
| # Testar conexão | |
| db_logger.test_connection() | |
| # Estatísticas de uso | |
| stats = db_logger.get_log_statistics() | |
| ``` | |
| ## Conclusão | |
| O sistema de logging avançado fornece visibilidade completa sobre todas as operações do sistema, permitindo: | |
| - **Monitoramento em tempo real** | |
| - **Análise de performance** | |
| - **Detecção de problemas** | |
| - **Auditoria de operações** | |
| - **Otimização contínua** | |
| Para mais informações, consulte os arquivos de código fonte ou a interface web de logs. |