summaryrefslogtreecommitdiff
path: root/daemon/logger/logger_error.go
blob: 70f4311979c491b8639ea330fab81ee61aacccd9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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")
	}
}