teste / docs /logging_system.md
torxyton's picture
feat: Implementar sistema de logging avançado com SQLite3
b94122a
# 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.