I wanted to a way through which we could keep the count of no. of errors and warnings that have occurred in logrus logs.
I want to use a struct to keep count of the errors and warnings,
type ErrorsAndWarnings struct{
Errors int
Warnings int
}
You can use hooks in logrus. Hook will be called each time an log will be called for a level.
// You can make Errors and Warnings as atomic integers or probably
// use locks to make it thread safe
type ErrorsAndWarnings struct{
Errors int
Warnings int
}
var (
levels = []logrus.Level{logrus.WarnLevel, logrus.ErrorLevel}
)
func (h *ErrorsAndWarnings) Levels() []logrus.Level {
return levels
}
func (h *ErrorsAndWarnings) Fire(entry *logrus.Entry) error {
if entry.Level == logrus.ErrorLevel{
h.Errors++
}else if entry.Level == logrus.WarnLevel{
h.Warnings++
}
return nil
}