logger_error.go 925 B

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