diff --git a/internal/subscriber/subscriber.go b/internal/subscriber/subscriber.go index 34bb797..fcb2d23 100644 --- a/internal/subscriber/subscriber.go +++ b/internal/subscriber/subscriber.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "log/slog" + "net/url" "time" "aiaa-notification-service/internal/config" @@ -42,7 +43,10 @@ func (s *Subscriber) Run(ctx context.Context) error { } if err := s.consumeOnce(ctx); err != nil { - slog.Error("subscriber error, reconnecting", "name", s.cfg.Name, "error", err) + slog.Error("subscriber error, reconnecting", + "name", s.cfg.Name, + "host", brokerHost(s.cfg.URL), + "error", err.Error()) select { case <-ctx.Done(): return ctx.Err() @@ -159,6 +163,17 @@ func (s *Subscriber) republish(ch *amqp.Channel, d amqp.Delivery, queue string) slog.Info("message requeued", "name", s.cfg.Name, "retry", headers[retryHeader], "max", s.cfg.MaxRetry) } +func brokerHost(raw string) string { + u, err := url.Parse(raw) + if err != nil || u.Hostname() == "" { + return "" + } + if u.Port() != "" { + return u.Hostname() + ":" + u.Port() + } + return u.Hostname() +} + func copyAMQPHeaders(headers amqp.Table) amqp.Table { out := amqp.Table{} for k, v := range headers {