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