From e1c092659aabd680497d82f12f651ec71fed175c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 17 May 2023 10:51:03 +0200 Subject: [PATCH] Adding app/log/HookWriter.go --- app/log/HookWriter.go | 48 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 app/log/HookWriter.go diff --git a/app/log/HookWriter.go b/app/log/HookWriter.go new file mode 100644 index 0000000..f85473f --- /dev/null +++ b/app/log/HookWriter.go @@ -0,0 +1,48 @@ +package log + +import ( + "io" + + log "github.com/sirupsen/logrus" +) + +type HookWriter struct { + Writer io.Writer + LogLevels []log.Level +} + +func (hook *HookWriter) Fire(entry *log.Entry) error { + line, err := entry.String() + if err != nil { + return err + } + _, err = hook.Writer.Write([]byte(line)) + return err +} + +func (hook *HookWriter) Levels() []log.Level { + return hook.LogLevels +} + +func MakeStdHook(writer io.Writer) *HookWriter { + return &HookWriter{ + Writer: writer, + LogLevels: []log.Level{ + log.InfoLevel, + log.DebugLevel, + }, + } +} + +func MakeErrorHook(writer io.Writer) *HookWriter { + return &HookWriter{ + Writer: writer, + LogLevels: []log.Level{ + log.ErrorLevel, + log.WarnLevel, + log.FatalLevel, + log.PanicLevel, + log.TraceLevel, + }, + } +}