Files
dejo-node/docs/logging.md
2025-05-23 10:44:32 -03:00

91 lines
2.3 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📜 **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!** 🔥