File size: 8,828 Bytes
b94122a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
# 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.