Как проверить логи, сгенерированные через logrus, чтобы получить счетчик нет.ошибок и предупреждений - PullRequest
1 голос
/ 20 апреля 2019

Я хотел, чтобы мы могли вести счет нет. ошибок и предупреждений, которые произошли в логах logrus.

Я хочу использовать структуру для подсчета ошибок и предупреждений,

    type ErrorsAndWarnings struct{
        Errors int
        Warnings int
    }

1 Ответ

1 голос
/ 22 апреля 2019

Вы можете использовать крючки в logrus.Крючок будет вызываться каждый раз, когда для уровня вызывается журнал.

// 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
}
...