91 lines
2.3 KiB
Markdown
91 lines
2.3 KiB
Markdown
# 📜 **Logging - DEJO Node**
|
||
|
||
## 📌 **Visão Geral**
|
||
O **DEJO Node** implementa um sistema de logging estruturado para **monitoramento, auditoria e depuração** do funcionamento da blockchain. Utilizamos **Zap (Uber-go)** para logs de alto desempenho e baixa latência.
|
||
|
||
---
|
||
|
||
## **1️⃣ Níveis de Log**
|
||
Os logs seguem uma hierarquia de severidade:
|
||
- **DEBUG** → Informações detalhadas para desenvolvimento.
|
||
- **INFO** → Eventos operacionais normais.
|
||
- **WARN** → Eventos que podem exigir atenção.
|
||
- **ERROR** → Problemas que impactam a funcionalidade, mas não interrompem o serviço.
|
||
- **FATAL** → Falhas críticas que resultam no encerramento do serviço.
|
||
|
||
---
|
||
|
||
## **2️⃣ Exemplo de Configuração de Logging**
|
||
📌 **Trecho do `config.yaml`**:
|
||
```yaml
|
||
logging:
|
||
level: "info"
|
||
output: "stdout" # Pode ser "stdout", "file" ou "json"
|
||
filePath: "/var/log/dejo-node.log"
|
||
format: "json" # Pode ser "json" ou "console"
|
||
```
|
||
|
||
📌 **Trecho de código usando Zap:**
|
||
```go
|
||
package logger
|
||
|
||
import (
|
||
"go.uber.org/zap"
|
||
)
|
||
|
||
var log *zap.Logger
|
||
|
||
func InitLogger(level string) {
|
||
var err error
|
||
cfg := zap.NewProductionConfig()
|
||
cfg.Level = zap.NewAtomicLevelAt(parseLogLevel(level))
|
||
log, err = cfg.Build()
|
||
if err != nil {
|
||
panic("Erro ao inicializar logger: " + err.Error())
|
||
}
|
||
}
|
||
|
||
func Info(msg string, fields ...zap.Field) {
|
||
log.Info(msg, fields...)
|
||
}
|
||
|
||
func Error(msg string, fields ...zap.Field) {
|
||
log.Error(msg, fields...)
|
||
}
|
||
|
||
func Fatal(msg string, fields ...zap.Field) {
|
||
log.Fatal(msg, fields...)
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## **3️⃣ Exemplo de Saída de Log**
|
||
📌 **Formato JSON:**
|
||
```json
|
||
{
|
||
"level": "info",
|
||
"timestamp": "2025-03-18T12:00:00Z",
|
||
"message": "Novo bloco minerado",
|
||
"blockHeight": 10234,
|
||
"hash": "0xa7b9c..."
|
||
}
|
||
```
|
||
|
||
📌 **Formato Console:**
|
||
```
|
||
[INFO] 2025-03-18T12:00:00Z Novo bloco minerado | blockHeight=10234 hash=0xa7b9c...
|
||
```
|
||
|
||
---
|
||
|
||
## **4️⃣ Integração com Monitoramento**
|
||
- Logs podem ser enviados para **Elastic Stack (Elasticsearch + Kibana)**.
|
||
- Suporte a **Fluentd** para roteamento de logs para múltiplos destinos.
|
||
- **Prometheus e Grafana** podem coletar métricas baseadas nos logs.
|
||
|
||
---
|
||
|
||
📌 **Este documento será atualizado conforme novas funcionalidades forem adicionadas.**
|
||
|
||
🚀 **DEJO Node: Logging estruturado para máxima observabilidade!** 🔥 |