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

2.3 KiB
Raw Blame History

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