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