From cab5efba36d36a15afd2ad1936deca7b775a0897 Mon Sep 17 00:00:00 2001 From: Michael Mayer Date: Fri, 23 Dec 2022 01:35:59 +0100 Subject: [PATCH] Logging: Add output writer wrapper so the default logger can use Logrus Signed-off-by: Michael Mayer --- internal/event/init.go | 8 ++++++++ internal/event/log_writer.go | 24 ++++++++++++++++++++++++ internal/event/log_writer_test.go | 11 +++++++++++ 3 files changed, 43 insertions(+) create mode 100644 internal/event/log_writer.go create mode 100644 internal/event/log_writer_test.go diff --git a/internal/event/init.go b/internal/event/init.go index b617a9300..6d9619b4b 100644 --- a/internal/event/init.go +++ b/internal/event/init.go @@ -1,6 +1,7 @@ package event import ( + "log" "os" "github.com/sirupsen/logrus" @@ -24,6 +25,13 @@ func init() { ReportCaller: false, } + // Default logger shall use Logrus. + log.SetFlags(0) + log.SetOutput(&LogWriter{ + Log: Log, + Level: logrus.DebugLevel, + }) + // Create dummy audit logger. AuditLog = dummy.NewLogger() } diff --git a/internal/event/log_writer.go b/internal/event/log_writer.go new file mode 100644 index 000000000..b56f88904 --- /dev/null +++ b/internal/event/log_writer.go @@ -0,0 +1,24 @@ +package event + +import "github.com/sirupsen/logrus" + +// LogWriter is an output writer wrapper for using Logrus with the standard logger. +type LogWriter struct { + Log Logger + Level logrus.Level +} + +// Write implements io.Writer. +func (w *LogWriter) Write(b []byte) (int, error) { + n := len(b) + + if n > 0 && b[n-1] == '\n' { + b = b[:n-1] + } + + if w.Log != nil { + w.Log.Log(w.Level, string(b)) + } + + return n, nil +} diff --git a/internal/event/log_writer_test.go b/internal/event/log_writer_test.go new file mode 100644 index 000000000..efc4c843f --- /dev/null +++ b/internal/event/log_writer_test.go @@ -0,0 +1,11 @@ +package event + +import ( + "log" + "testing" +) + +func TestLogWriter(t *testing.T) { + l := log.Default() + l.Println("Test 123") +}