Replace all Printf logging with structured zerolog in runtime files
Migrates CHORUS logging to 100% structured JSON format with ISO 8601 timestamps for all runtime-critical subsystems. Files modified: - internal/runtime/shared.go: SimpleTaskTracker task completion logging - api/http_server.go: HTTP server, council opportunity, and status logging - pubsub/pubsub.go: PubSub initialization, topic management, and message handlers - discovery/mdns.go: mDNS peer discovery and connection logging All Printf calls replaced with structured zerolog logging using: - .Info() for informational messages - .Warn() for warnings and errors - .Debug() for verbose debug output - Structured fields: peer_id, topic_name, council_id, etc. Version bumped to 0.5.40 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -8,10 +8,12 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"chorus/internal/logging"
|
||||
"chorus/pkg/shhh"
|
||||
pubsub "github.com/libp2p/go-libp2p-pubsub"
|
||||
"github.com/libp2p/go-libp2p/core/host"
|
||||
"github.com/libp2p/go-libp2p/core/peer"
|
||||
"github.com/rs/zerolog"
|
||||
)
|
||||
|
||||
// PubSub handles publish/subscribe messaging for Bzzz coordination and HMMM meta-discussion
|
||||
@@ -56,6 +58,9 @@ type PubSub struct {
|
||||
// SHHH sentinel
|
||||
redactor *shhh.Sentinel
|
||||
redactorMux sync.RWMutex
|
||||
|
||||
// Structured logger
|
||||
logger zerolog.Logger
|
||||
}
|
||||
|
||||
// HypercoreLogger interface for dependency injection
|
||||
@@ -168,6 +173,7 @@ func NewPubSubWithLogger(ctx context.Context, h host.Host, chorusTopic, hmmmTopi
|
||||
dynamicSubs: make(map[string]*pubsub.Subscription),
|
||||
dynamicHandlers: make(map[string]func([]byte, peer.ID)),
|
||||
hypercoreLog: logger,
|
||||
logger: logging.ForComponent(logging.ComponentP2P),
|
||||
}
|
||||
|
||||
// Join static topics
|
||||
@@ -181,7 +187,11 @@ func NewPubSubWithLogger(ctx context.Context, h host.Host, chorusTopic, hmmmTopi
|
||||
go p.handleHmmmMessages()
|
||||
go p.handleContextFeedbackMessages()
|
||||
|
||||
fmt.Printf("📡 PubSub initialized - Bzzz: %s, HMMM: %s, Context: %s\n", chorusTopic, hmmmTopic, contextTopic)
|
||||
p.logger.Info().
|
||||
Str("bzzz_topic", chorusTopic).
|
||||
Str("hmmm_topic", hmmmTopic).
|
||||
Str("context_topic", contextTopic).
|
||||
Msg("PubSub initialized")
|
||||
return p, nil
|
||||
}
|
||||
|
||||
@@ -297,7 +307,7 @@ func (p *PubSub) subscribeDynamicTopic(topicName string, handler func([]byte, pe
|
||||
|
||||
go p.handleDynamicMessages(topicName, sub)
|
||||
|
||||
fmt.Printf("✅ Joined dynamic topic: %s\n", topicName)
|
||||
p.logger.Info().Str("topic_name", topicName).Msg("Joined dynamic topic")
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -339,12 +349,12 @@ func (p *PubSub) JoinRoleBasedTopics(role string, expertise []string, reportsTo
|
||||
// Join all identified topics
|
||||
for _, topicName := range topicsToJoin {
|
||||
if err := p.JoinDynamicTopic(topicName); err != nil {
|
||||
fmt.Printf("⚠️ Failed to join role-based topic %s: %v\n", topicName, err)
|
||||
p.logger.Warn().Err(err).Str("topic_name", topicName).Msg("Failed to join role-based topic")
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Printf("🎯 Joined %d role-based topics for role: %s\n", len(topicsToJoin), role)
|
||||
p.logger.Info().Int("topic_count", len(topicsToJoin)).Str("role", role).Msg("Joined role-based topics")
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -379,7 +389,7 @@ func (p *PubSub) LeaveDynamicTopic(topicName string) {
|
||||
delete(p.dynamicHandlers, topicName)
|
||||
p.dynamicHandlersMux.Unlock()
|
||||
|
||||
fmt.Printf("🗑️ Left dynamic topic: %s\n", topicName)
|
||||
p.logger.Info().Str("topic_name", topicName).Msg("Left dynamic topic")
|
||||
}
|
||||
|
||||
// PublishToDynamicTopic publishes a message to a specific dynamic topic
|
||||
@@ -588,7 +598,7 @@ func (p *PubSub) handleBzzzMessages() {
|
||||
if p.ctx.Err() != nil {
|
||||
return // Context cancelled
|
||||
}
|
||||
fmt.Printf("❌ Error receiving Bzzz message: %v\n", err)
|
||||
p.logger.Warn().Err(err).Msg("Error receiving Bzzz message")
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -598,7 +608,7 @@ func (p *PubSub) handleBzzzMessages() {
|
||||
|
||||
var chorusMsg Message
|
||||
if err := json.Unmarshal(msg.Data, &chorusMsg); err != nil {
|
||||
fmt.Printf("❌ Failed to unmarshal Bzzz message: %v\n", err)
|
||||
p.logger.Warn().Err(err).Msg("Failed to unmarshal Bzzz message")
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -614,7 +624,7 @@ func (p *PubSub) handleHmmmMessages() {
|
||||
if p.ctx.Err() != nil {
|
||||
return // Context cancelled
|
||||
}
|
||||
fmt.Printf("❌ Error receiving HMMM message: %v\n", err)
|
||||
p.logger.Warn().Err(err).Msg("Error receiving HMMM message")
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -624,7 +634,7 @@ func (p *PubSub) handleHmmmMessages() {
|
||||
|
||||
var hmmmMsg Message
|
||||
if err := json.Unmarshal(msg.Data, &hmmmMsg); err != nil {
|
||||
fmt.Printf("❌ Failed to unmarshal HMMM message: %v\n", err)
|
||||
p.logger.Warn().Err(err).Msg("Failed to unmarshal HMMM message")
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -644,7 +654,7 @@ func (p *PubSub) handleContextFeedbackMessages() {
|
||||
if p.ctx.Err() != nil {
|
||||
return // Context cancelled
|
||||
}
|
||||
fmt.Printf("❌ Error receiving Context Feedback message: %v\n", err)
|
||||
p.logger.Warn().Err(err).Msg("Error receiving Context Feedback message")
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -654,7 +664,7 @@ func (p *PubSub) handleContextFeedbackMessages() {
|
||||
|
||||
var contextMsg Message
|
||||
if err := json.Unmarshal(msg.Data, &contextMsg); err != nil {
|
||||
fmt.Printf("❌ Failed to unmarshal Context Feedback message: %v\n", err)
|
||||
p.logger.Warn().Err(err).Msg("Failed to unmarshal Context Feedback message")
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -682,7 +692,7 @@ func (p *PubSub) handleDynamicMessages(topicName string, sub *pubsub.Subscriptio
|
||||
if p.ctx.Err() != nil || err.Error() == "subscription cancelled" {
|
||||
return // Subscription was cancelled, exit handler
|
||||
}
|
||||
fmt.Printf("❌ Error receiving dynamic message on %s: %v\n", topicName, err)
|
||||
p.logger.Warn().Err(err).Str("topic_name", topicName).Msg("Error receiving dynamic message")
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -697,7 +707,7 @@ func (p *PubSub) handleDynamicMessages(topicName string, sub *pubsub.Subscriptio
|
||||
|
||||
var dynamicMsg Message
|
||||
if err := json.Unmarshal(msg.Data, &dynamicMsg); err != nil {
|
||||
fmt.Printf("❌ Failed to unmarshal dynamic message on %s: %v\n", topicName, err)
|
||||
p.logger.Warn().Err(err).Str("topic_name", topicName).Msg("Failed to unmarshal dynamic message")
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -710,7 +720,11 @@ func (p *PubSub) handleDynamicMessages(topicName string, sub *pubsub.Subscriptio
|
||||
|
||||
// processBzzzMessage handles different types of Bzzz coordination messages
|
||||
func (p *PubSub) processBzzzMessage(msg Message, from peer.ID) {
|
||||
fmt.Printf("🐝 Bzzz [%s] from %s: %v\n", msg.Type, from.ShortString(), msg.Data)
|
||||
p.logger.Debug().
|
||||
Str("message_type", string(msg.Type)).
|
||||
Str("from_peer", from.ShortString()).
|
||||
Interface("data", msg.Data).
|
||||
Msg("Bzzz message received")
|
||||
|
||||
// Log to hypercore if logger is available
|
||||
if p.hypercoreLog != nil {
|
||||
@@ -743,15 +757,18 @@ func (p *PubSub) processBzzzMessage(msg Message, from peer.ID) {
|
||||
}
|
||||
|
||||
if err := p.hypercoreLog.AppendString(logType, logData); err != nil {
|
||||
fmt.Printf("❌ Failed to log Bzzz message to hypercore: %v\n", err)
|
||||
p.logger.Warn().Err(err).Msg("Failed to log Bzzz message to hypercore")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// processHmmmMessage provides default handling for HMMM messages if no external handler is set
|
||||
func (p *PubSub) processHmmmMessage(msg Message, from peer.ID) {
|
||||
fmt.Printf("🎯 Default HMMM Handler [%s] from %s: %v\n",
|
||||
msg.Type, from.ShortString(), msg.Data)
|
||||
p.logger.Debug().
|
||||
Str("message_type", string(msg.Type)).
|
||||
Str("from_peer", from.ShortString()).
|
||||
Interface("data", msg.Data).
|
||||
Msg("Default HMMM Handler")
|
||||
|
||||
// Log to hypercore if logger is available
|
||||
if p.hypercoreLog != nil {
|
||||
@@ -794,15 +811,18 @@ func (p *PubSub) processHmmmMessage(msg Message, from peer.ID) {
|
||||
}
|
||||
|
||||
if err := p.hypercoreLog.AppendString(logType, logData); err != nil {
|
||||
fmt.Printf("❌ Failed to log HMMM message to hypercore: %v\n", err)
|
||||
p.logger.Warn().Err(err).Msg("Failed to log HMMM message to hypercore")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// processContextFeedbackMessage provides default handling for context feedback messages if no external handler is set
|
||||
func (p *PubSub) processContextFeedbackMessage(msg Message, from peer.ID) {
|
||||
fmt.Printf("🧠 Context Feedback [%s] from %s: %v\n",
|
||||
msg.Type, from.ShortString(), msg.Data)
|
||||
p.logger.Debug().
|
||||
Str("message_type", string(msg.Type)).
|
||||
Str("from_peer", from.ShortString()).
|
||||
Interface("data", msg.Data).
|
||||
Msg("Context Feedback")
|
||||
|
||||
// Log to hypercore if logger is available
|
||||
if p.hypercoreLog != nil {
|
||||
@@ -834,7 +854,7 @@ func (p *PubSub) processContextFeedbackMessage(msg Message, from peer.ID) {
|
||||
}
|
||||
|
||||
if err := p.hypercoreLog.AppendString(logType, logData); err != nil {
|
||||
fmt.Printf("❌ Failed to log Context Feedback message to hypercore: %v\n", err)
|
||||
p.logger.Warn().Err(err).Msg("Failed to log Context Feedback message to hypercore")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user