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

91 lines
2.3 KiB
Markdown
Raw Permalink 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!** 🔥