2.3 KiB
2.3 KiB
📜 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:
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:
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:
{
"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! 🔥