logger_error.go 951 B

1234567891011121314151617181920212223242526
  1. package logger
  2. import (
  3. "context"
  4. "github.com/containerd/log"
  5. "golang.org/x/time/rate"
  6. )
  7. // Rates based on journald defaults of 10,000 messages in 30s.
  8. // reference: https://www.freedesktop.org/software/systemd/man/journald.conf.html#RateLimitIntervalSec=
  9. var logErrorLimiter = rate.NewLimiter(333, 333)
  10. // logDriverError logs errors produced by log drivers to the daemon logs. It also increments the logWritesFailedCount
  11. // metric.
  12. // Logging to the daemon logs is limited to 333 operations per second at most. If this limit is exceeded, the
  13. // logWritesFailedCount is still counted, but logging to the daemon logs is omitted in order to prevent disk saturation.
  14. func logDriverError(loggerName, msgLine string, logErr error) {
  15. logWritesFailedCount.Inc(1)
  16. if logErrorLimiter.Allow() {
  17. log.G(context.TODO()).WithError(logErr).
  18. WithField("driver", loggerName).
  19. WithField("message", msgLine).
  20. Errorf("Error writing log message")
  21. }
  22. }