conn_aware_logger.go 921 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package supervisor
  2. import (
  3. "github.com/rs/zerolog"
  4. "github.com/cloudflare/cloudflared/connection"
  5. "github.com/cloudflare/cloudflared/tunnelstate"
  6. )
  7. type ConnAwareLogger struct {
  8. tracker *tunnelstate.ConnTracker
  9. logger *zerolog.Logger
  10. }
  11. func NewConnAwareLogger(logger *zerolog.Logger, tracker *tunnelstate.ConnTracker, observer *connection.Observer) *ConnAwareLogger {
  12. connAwareLogger := &ConnAwareLogger{
  13. tracker: tracker,
  14. logger: logger,
  15. }
  16. observer.RegisterSink(connAwareLogger.tracker)
  17. return connAwareLogger
  18. }
  19. func (c *ConnAwareLogger) ReplaceLogger(logger *zerolog.Logger) *ConnAwareLogger {
  20. return &ConnAwareLogger{
  21. tracker: c.tracker,
  22. logger: logger,
  23. }
  24. }
  25. func (c *ConnAwareLogger) ConnAwareLogger() *zerolog.Event {
  26. if c.tracker.CountActiveConns() == 0 {
  27. return c.logger.Error()
  28. }
  29. return c.logger.Warn()
  30. }
  31. func (c *ConnAwareLogger) Logger() *zerolog.Logger {
  32. return c.logger
  33. }