commit inicial do projeto
This commit is contained in:
91
docs/logging.md
Normal file
91
docs/logging.md
Normal file
@ -0,0 +1,91 @@
|
||||
# 📜 **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!** 🔥
|
||||
Reference in New Issue
Block a user