From ed50ff00ef2b19d92e32749b8120a85d6180cb42 Mon Sep 17 00:00:00 2001 From: Elara Musayelyan Date: Wed, 4 Jan 2023 14:53:04 -0800 Subject: [PATCH] Add SetLevel function --- cli.go | 7 +++++++ json.go | 5 +++++ log/log.go | 8 +++++++- main.go => logger.go | 5 ++++- multi.go | 7 +++++++ nop.go | 3 +++ pretty.go | 5 +++++ 7 files changed, 38 insertions(+), 2 deletions(-) rename main.go => logger.go (98%) diff --git a/cli.go b/cli.go index e8e3286..3591f9f 100644 --- a/cli.go +++ b/cli.go @@ -14,6 +14,8 @@ import ( "github.com/mattn/go-isatty" ) +var _ Logger = (*CLILogger)(nil) + type CLILogger struct { Out io.Writer Level LogLevel @@ -66,6 +68,11 @@ func (pl *CLILogger) NoExit() { pl.noExit = true } +// SetLevel sets the log level of the logger +func (pl *CLILogger) SetLevel(l LogLevel) { + pl.Level = l +} + // Debug creates a new debug event with the given message func (pl *CLILogger) Debug(msg string) LogBuilder { return newCLILogBuilder(pl, msg, LogLevelDebug) diff --git a/json.go b/json.go index b5a4658..f7eaeff 100644 --- a/json.go +++ b/json.go @@ -40,6 +40,11 @@ func (jl *JSONLogger) NoExit() { jl.noExit = true } +// SetLevel sets the log level of the logger +func (jl *JSONLogger) SetLevel(l LogLevel) { + jl.Level = l +} + // Debug creates a new debug event with the given message func (jl *JSONLogger) Debug(msg string) LogBuilder { return newJSONLogBuilder(jl, msg, LogLevelDebug) diff --git a/log/log.go b/log/log.go index 238e508..e346450 100644 --- a/log/log.go +++ b/log/log.go @@ -1,8 +1,9 @@ package log import ( - "go.arsenm.dev/logger" "os" + + "go.arsenm.dev/logger" ) var Logger logger.Logger = logger.NewJSON(os.Stderr) @@ -17,6 +18,11 @@ func NoExit() { Logger.NoExit() } +// SetLevel sets the log level of the logger +func SetLevel(l logger.LogLevel) { + Logger.SetLevel(l) +} + // Debug creates a new debug event with the given message func Debug(msg string) logger.LogBuilder { return Logger.Debug(msg) diff --git a/main.go b/logger.go similarity index 98% rename from main.go rename to logger.go index d133cd7..d247b4e 100644 --- a/main.go +++ b/logger.go @@ -1,8 +1,8 @@ package logger import ( - "fmt" "errors" + "fmt" "strings" ) @@ -51,6 +51,9 @@ type Logger interface { // NoExit prevents the logger from exiting on fatal events NoExit() + // SetLevel sets the log level of the logger + SetLevel(LogLevel) + // Debug creates a new debug event with the given message Debug(string) LogBuilder diff --git a/multi.go b/multi.go index 8f46d54..d06b303 100644 --- a/multi.go +++ b/multi.go @@ -34,6 +34,13 @@ func (ml *MultiLogger) NoPanic() { ml.noPanic = true } +// SetLevel sets the log level of the logger +func (ml *MultiLogger) SetLevel(l LogLevel) { + for _, logger := range ml.Loggers { + logger.SetLevel(l) + } +} + // Debug creates a new debug event with the given message func (ml *MultiLogger) Debug(msg string) LogBuilder { lbs := make([]LogBuilder, len(ml.Loggers)) diff --git a/nop.go b/nop.go index 7d14cf3..d77e249 100644 --- a/nop.go +++ b/nop.go @@ -21,6 +21,9 @@ func (nl NopLogger) NoPanic() {} // NoExit prevents the logger from exiting on fatal events func (nl NopLogger) NoExit() {} +// SetLevel sets the log level of the logger +func (nl NopLogger) SetLevel(LogLevel) {} + // Debug creates a new debug event with the given message func (nl NopLogger) Debug(msg string) LogBuilder { return NopLogBuilder{} diff --git a/pretty.go b/pretty.go index 2468471..f4a24db 100644 --- a/pretty.go +++ b/pretty.go @@ -81,6 +81,11 @@ func (pl *PrettyLogger) NoExit() { pl.noExit = true } +// SetLevel sets the log level of the logger +func (pl *PrettyLogger) SetLevel(l LogLevel) { + pl.Level = l +} + // Debug creates a new debug event with the given message func (pl *PrettyLogger) Debug(msg string) LogBuilder { return newPrettyLogBuilder(pl, msg, LogLevelDebug)