From a445a51c0d9abbb2140e51081ae5c4e5e52160d4 Mon Sep 17 00:00:00 2001 From: brent s Date: Wed, 7 Sep 2022 06:03:28 -0400 Subject: [PATCH] Adding GetDebug method to loggers. --- logging/doc.go | 1 + logging/funcs_file.go | 28 ++++++++++------ logging/funcs_multilogger.go | 32 +++++++++++------- logging/funcs_nulllogger.go | 8 +++++ logging/funcs_std.go | 38 +++++++++++++--------- logging/funcs_sysd_linux.go | 30 ++++++++++------- logging/funcs_syslog_linux.go | 20 ++++++++---- logging/funcs_winlogger_windows.go | 52 +++++++++++++++++------------- logging/types.go | 15 +++++---- 9 files changed, 141 insertions(+), 83 deletions(-) diff --git a/logging/doc.go b/logging/doc.go index bf5a526..0e42005 100644 --- a/logging/doc.go +++ b/logging/doc.go @@ -37,6 +37,7 @@ Note that in the case of a MultiLogger, err (if not nil) will be a (r00t2.io/gou logging.Logger types also have the following methods: DoDebug(d bool) (err error) + GetDebug() (d bool) SetPrefix(p string) (err error) GetPrefix() (p string, err error) Setup() (err error) diff --git a/logging/funcs_file.go b/logging/funcs_file.go index f2f1c9e..0705b7d 100644 --- a/logging/funcs_file.go +++ b/logging/funcs_file.go @@ -1,12 +1,12 @@ package logging import ( - `errors` + "errors" "fmt" - `io/fs` + "io/fs" "log" "os" - `strings` + "strings" ) // Setup sets up/configures a FileLogger and prepares it for use. @@ -43,8 +43,8 @@ func (l *FileLogger) Shutdown() (err error) { } /* - GetPrefix returns the prefix used by this FileLogger. - err will always be nil; it's there for interface-compat. +GetPrefix returns the prefix used by this FileLogger. +err will always be nil; it's there for interface-compat. */ func (l *FileLogger) GetPrefix() (prefix string, err error) { @@ -54,9 +54,9 @@ func (l *FileLogger) GetPrefix() (prefix string, err error) { } /* - DoDebug sets the debug state of this FileLogger. - Note that this merely acts as a *safety filter* for debug messages to avoid sensitive information being written to the log. - err will always be nil; it's there for interface-compat. +DoDebug sets the debug state of this FileLogger. +Note that this merely acts as a *safety filter* for debug messages to avoid sensitive information being written to the log. +err will always be nil; it's there for interface-compat. */ func (l *FileLogger) DoDebug(d bool) (err error) { @@ -65,9 +65,17 @@ func (l *FileLogger) DoDebug(d bool) (err error) { return } +// GetDebug returns the debug status of this FileLogger. +func (l *FileLogger) GetDebug() (d bool) { + + d = l.EnableDebug + + return +} + /* - SetPrefix sets the prefix for this FileLogger. - err will always be nil; it's there for interface-compat. +SetPrefix sets the prefix for this FileLogger. +err will always be nil; it's there for interface-compat. */ func (l *FileLogger) SetPrefix(prefix string) (err error) { diff --git a/logging/funcs_multilogger.go b/logging/funcs_multilogger.go index ee9d712..39e349b 100644 --- a/logging/funcs_multilogger.go +++ b/logging/funcs_multilogger.go @@ -1,11 +1,11 @@ package logging import ( - `errors` - `fmt` - `sync` + "errors" + "fmt" + "sync" - `r00t2.io/goutils/multierr` + "r00t2.io/goutils/multierr" ) // Setup sets up/configures a MultiLogger (and all its MultiLogger.Loggers) and prepares it for use. @@ -67,8 +67,8 @@ func (m *MultiLogger) Shutdown() (err error) { } /* - GetPrefix returns the prefix used by this MultiLogger (and all its MultiLogger.Loggers). - err will always be nil; it's there for interface-compat. +GetPrefix returns the prefix used by this MultiLogger (and all its MultiLogger.Loggers). +err will always be nil; it's there for interface-compat. */ func (m *MultiLogger) GetPrefix() (prefix string, err error) { @@ -79,10 +79,10 @@ func (m *MultiLogger) GetPrefix() (prefix string, err error) { } /* - DoDebug sets the debug state of this MultiLogger (and all its MultiLogger.Loggers). - Note that this merely acts as a *safety filter* for debug messages to avoid sensitive information being written to the log. +DoDebug sets the debug state of this MultiLogger (and all its MultiLogger.Loggers). +Note that this merely acts as a *safety filter* for debug messages to avoid sensitive information being written to the log. - If you had a logger-specific EnableDebug set, you will need to re-set it to your desired state after running this method. +If you had a logger-specific EnableDebug set, you will need to re-set it to your desired state after running this method. */ func (m *MultiLogger) DoDebug(d bool) (err error) { @@ -114,10 +114,18 @@ func (m *MultiLogger) DoDebug(d bool) (err error) { return } -/* - SetPrefix sets the prefix for this MultiLogger (and all its MultiLogger.Loggers). +// GetDebug returns the debug status of this MultiLogger. +func (m *MultiLogger) GetDebug() (d bool) { - If you had a logger-specific Prefix set, you will need to re-set it to your desired prefix after running this method. + d = m.EnableDebug + + return +} + +/* +SetPrefix sets the prefix for this MultiLogger (and all its MultiLogger.Loggers). + +If you had a logger-specific Prefix set, you will need to re-set it to your desired prefix after running this method. */ func (m *MultiLogger) SetPrefix(prefix string) (err error) { diff --git a/logging/funcs_nulllogger.go b/logging/funcs_nulllogger.go index 07d5c3b..781388c 100644 --- a/logging/funcs_nulllogger.go +++ b/logging/funcs_nulllogger.go @@ -10,6 +10,14 @@ func (l *NullLogger) DoDebug(d bool) (err error) { return } +// GetDebug returns the debug status of this NullLogger. It will always return true. 🙃 +func (n *NullLogger) GetDebug() (d bool) { + + d = true + + return +} + // SetPrefix does nothing at all; it's here for interface compat. 🙃 func (l *NullLogger) SetPrefix(p string) (err error) { return diff --git a/logging/funcs_std.go b/logging/funcs_std.go index 7816429..99d5e7d 100644 --- a/logging/funcs_std.go +++ b/logging/funcs_std.go @@ -2,15 +2,15 @@ package logging import ( "fmt" - `io` - `log` - `os` - `strings` + "io" + "log" + "os" + "strings" ) /* - Setup sets up/configures a StdLogger and prepares it for use. - err will always be nil; it's there for interface-compat. +Setup sets up/configures a StdLogger and prepares it for use. +err will always be nil; it's there for interface-compat. */ func (l *StdLogger) Setup() (err error) { @@ -47,8 +47,8 @@ func (l *StdLogger) Setup() (err error) { } /* - Shutdown cleanly shuts down a StdLogger. - err will always be nil; it's there for interface-compat. +Shutdown cleanly shuts down a StdLogger. +err will always be nil; it's there for interface-compat. */ func (l *StdLogger) Shutdown() (err error) { @@ -58,8 +58,8 @@ func (l *StdLogger) Shutdown() (err error) { } /* - GetPrefix returns the prefix used by this StdLogger. - err will always be nil; it's there for interface-compat. +GetPrefix returns the prefix used by this StdLogger. +err will always be nil; it's there for interface-compat. */ func (l *StdLogger) GetPrefix() (prefix string, err error) { @@ -69,9 +69,9 @@ func (l *StdLogger) GetPrefix() (prefix string, err error) { } /* - DoDebug sets the debug state of this StdLogger. - Note that this merely acts as a *safety filter* for debug messages to avoid sensitive information being written to the log. - err will always be nil; it's there for interface-compat. +DoDebug sets the debug state of this StdLogger. +Note that this merely acts as a *safety filter* for debug messages to avoid sensitive information being written to the log. +err will always be nil; it's there for interface-compat. */ func (l *StdLogger) DoDebug(d bool) (err error) { @@ -80,9 +80,17 @@ func (l *StdLogger) DoDebug(d bool) (err error) { return } +// GetDebug returns the debug status of this StdLogger. +func (l *StdLogger) GetDebug() (d bool) { + + d = l.EnableDebug + + return +} + /* - SetPrefix sets the prefix for this StdLogger. - err will always be nil; it's there for interface-compat. +SetPrefix sets the prefix for this StdLogger. +err will always be nil; it's there for interface-compat. */ func (l *StdLogger) SetPrefix(prefix string) (err error) { diff --git a/logging/funcs_sysd_linux.go b/logging/funcs_sysd_linux.go index bcefb2c..ac5b7e2 100644 --- a/logging/funcs_sysd_linux.go +++ b/logging/funcs_sysd_linux.go @@ -8,8 +8,8 @@ import ( ) /* - Setup sets up/configures a SystemDLogger and prepares it for use. - err will always be nil; it's there for interface-compat. +Setup sets up/configures a SystemDLogger and prepares it for use. +err will always be nil; it's there for interface-compat. */ func (l *SystemDLogger) Setup() (err error) { @@ -19,8 +19,8 @@ func (l *SystemDLogger) Setup() (err error) { } /* - Shutdown cleanly shuts down a SystemDLogger. - err will always be nil; it's there for interface-compat. +Shutdown cleanly shuts down a SystemDLogger. +err will always be nil; it's there for interface-compat. */ func (l *SystemDLogger) Shutdown() (err error) { @@ -30,8 +30,8 @@ func (l *SystemDLogger) Shutdown() (err error) { } /* - GetPrefix returns the prefix used by this SystemDLogger. - err will always be nil; it's there for interface-compat. +GetPrefix returns the prefix used by this SystemDLogger. +err will always be nil; it's there for interface-compat. */ func (l *SystemDLogger) GetPrefix() (prefix string, err error) { @@ -41,9 +41,9 @@ func (l *SystemDLogger) GetPrefix() (prefix string, err error) { } /* - DoDebug sets the debug state of this SystemDLogger. - Note that this merely acts as a *safety filter* for debug messages to avoid sensitive information being written to the log. - err will always be nil; it's there for interface-compat. +DoDebug sets the debug state of this SystemDLogger. +Note that this merely acts as a *safety filter* for debug messages to avoid sensitive information being written to the log. +err will always be nil; it's there for interface-compat. */ func (l *SystemDLogger) DoDebug(d bool) (err error) { @@ -52,9 +52,17 @@ func (l *SystemDLogger) DoDebug(d bool) (err error) { return } +// GetDebug returns the debug status of this SystemDLogger. +func (l *SystemDLogger) GetDebug() (d bool) { + + d = l.EnableDebug + + return +} + /* - SetPrefix sets the prefix for this SystemDLogger. - err will always be nil; it's there for interface-compat. +SetPrefix sets the prefix for this SystemDLogger. +err will always be nil; it's there for interface-compat. */ func (l *SystemDLogger) SetPrefix(prefix string) (err error) { diff --git a/logging/funcs_syslog_linux.go b/logging/funcs_syslog_linux.go index 451122e..82960d6 100644 --- a/logging/funcs_syslog_linux.go +++ b/logging/funcs_syslog_linux.go @@ -5,7 +5,7 @@ import ( "log" "log/syslog" - `r00t2.io/goutils/multierr` + "r00t2.io/goutils/multierr" ) // Setup sets up/configures a SyslogLogger and prepares it for use. @@ -73,8 +73,8 @@ func (l *SyslogLogger) Shutdown() (err error) { } /* - GetPrefix returns the prefix used by this SyslogLogger. - err will always be nil; it's there for interface-compat. +GetPrefix returns the prefix used by this SyslogLogger. +err will always be nil; it's there for interface-compat. */ func (l *SyslogLogger) GetPrefix() (prefix string, err error) { @@ -84,9 +84,9 @@ func (l *SyslogLogger) GetPrefix() (prefix string, err error) { } /* - DoDebug sets the debug state of this SyslogLogger. - Note that this merely acts as a *safety filter* for debug messages to avoid sensitive information being written to the log. - err will always be nil; it's there for interface-compat. +DoDebug sets the debug state of this SyslogLogger. +Note that this merely acts as a *safety filter* for debug messages to avoid sensitive information being written to the log. +err will always be nil; it's there for interface-compat. */ func (l *SyslogLogger) DoDebug(d bool) (err error) { @@ -95,6 +95,14 @@ func (l *SyslogLogger) DoDebug(d bool) (err error) { return } +// GetDebug returns the debug status of this SyslogLogger. +func (l *SyslogLogger) GetDebug() (d bool) { + + d = l.EnableDebug + + return +} + // SetPrefix sets the prefix for this SyslogLogger. func (l *SyslogLogger) SetPrefix(prefix string) (err error) { diff --git a/logging/funcs_winlogger_windows.go b/logging/funcs_winlogger_windows.go index f8edf9a..0dc153d 100644 --- a/logging/funcs_winlogger_windows.go +++ b/logging/funcs_winlogger_windows.go @@ -1,26 +1,26 @@ package logging import ( - `errors` - `fmt` - `os` - `os/exec` - `syscall` + "errors" + "fmt" + "os" + "os/exec" + "syscall" - `golang.org/x/sys/windows/registry` - `golang.org/x/sys/windows/svc/eventlog` - `r00t2.io/sysutils/paths` + "golang.org/x/sys/windows/registry" + "golang.org/x/sys/windows/svc/eventlog" + "r00t2.io/sysutils/paths" ) /* - Setup sets up/configures a WinLogger and prepares it for use. - This will fail with an Access Denied (the first time, at least) unless running with elevated permissions unless WinLogger.Prefix is - a registered Event Log source. +Setup sets up/configures a WinLogger and prepares it for use. +This will fail with an Access Denied (the first time, at least) unless running with elevated permissions unless WinLogger.Prefix is +a registered Event Log source. - If a failure occurs while trying to open the log with the given WinLogger.Prefix ("source"), a new Event Log source will be registered. - If WinLogger.Executable is not empty at the time of calling WinLogger.Setup (or WinLogger.ForceService is true), - eventlog.Install will be used (with the WinLogger.ExpandKey field). - Otherwise eventlog.InstallAsEventCreate will be used. +If a failure occurs while trying to open the log with the given WinLogger.Prefix ("source"), a new Event Log source will be registered. +If WinLogger.Executable is not empty at the time of calling WinLogger.Setup (or WinLogger.ForceService is true), +eventlog.Install will be used (with the WinLogger.ExpandKey field). +Otherwise eventlog.InstallAsEventCreate will be used. */ func (l *WinLogger) Setup() (err error) { @@ -108,8 +108,8 @@ func (l *WinLogger) Remove() (err error) { } /* - Shutdown cleanly shuts down a WinLogger but keep the source registered. Use WinLogger.Remove - (or set WinLogger.RemoveOnClose to true before calling WinLogger.Shutdown) to remove the registered source. +Shutdown cleanly shuts down a WinLogger but keep the source registered. Use WinLogger.Remove +(or set WinLogger.RemoveOnClose to true before calling WinLogger.Shutdown) to remove the registered source. */ func (l *WinLogger) Shutdown() (err error) { @@ -128,8 +128,8 @@ func (l *WinLogger) Shutdown() (err error) { } /* - GetPrefix returns the prefix used by this WinLogger. - err will always be nil; it's there for interface-compat. +GetPrefix returns the prefix used by this WinLogger. +err will always be nil; it's there for interface-compat. */ func (l *WinLogger) GetPrefix() (prefix string, err error) { @@ -139,9 +139,9 @@ func (l *WinLogger) GetPrefix() (prefix string, err error) { } /* - DoDebug sets the debug state of this WinLogger. - Note that this merely acts as a *safety filter* for debug messages to avoid sensitive information being written to the log. - err will always be nil; it's there for interface-compat. +DoDebug sets the debug state of this WinLogger. +Note that this merely acts as a *safety filter* for debug messages to avoid sensitive information being written to the log. +err will always be nil; it's there for interface-compat. */ func (l *WinLogger) DoDebug(d bool) (err error) { @@ -150,6 +150,14 @@ func (l *WinLogger) DoDebug(d bool) (err error) { return } +// GetDebug returns the debug status of this WinLogger. +func (l *WinLogger) GetDebug() (d bool) { + + d = l.EnableDebug + + return +} + // SetPrefix sets the prefix for this WinLogger. func (l *WinLogger) SetPrefix(prefix string) (err error) { diff --git a/logging/types.go b/logging/types.go index eda3e92..d65c449 100644 --- a/logging/types.go +++ b/logging/types.go @@ -6,7 +6,7 @@ import ( ) /* - Logger is one of the various loggers offered by this module. +Logger is one of the various loggers offered by this module. */ type Logger interface { Alert(s string, v ...interface{}) (err error) @@ -18,6 +18,7 @@ type Logger interface { Notice(s string, v ...interface{}) (err error) Warning(s string, v ...interface{}) (err error) DoDebug(d bool) (err error) + GetDebug() (d bool) SetPrefix(p string) (err error) GetPrefix() (p string, err error) Setup() (err error) @@ -25,8 +26,8 @@ type Logger interface { } /* - StdLogger uses the log package in stdlib to perform all logging. The default is to write to STDOUT. - If you wish to modify the underling log.Logger object, you can access it directly via StdLogger.Logger. +StdLogger uses the log package in stdlib to perform all logging. The default is to write to STDOUT. +If you wish to modify the underling log.Logger object, you can access it directly via StdLogger.Logger. */ type StdLogger struct { // All log.Logger fields/methods are exposed. @@ -71,11 +72,11 @@ type StdLogger struct { } /* - FileLogger uses a StdLogger with a file handle writer to write to the file given at Path. +FileLogger uses a StdLogger with a file handle writer to write to the file given at Path. - NOTE: If you wish to change the FileLogger.StdLogger.LogFlags, do *not* run FileLogger.StdLogger.Setup after doing so as this - will instead create a logger detached from the file handler. Instead, be sure to call FileLogger.Setup. - (Alternatively, run FileLogger.Shutdown and replace your logger with a new FileLogger.) +NOTE: If you wish to change the FileLogger.StdLogger.LogFlags, do *not* run FileLogger.StdLogger.Setup after doing so as this +will instead create a logger detached from the file handler. Instead, be sure to call FileLogger.Setup. +(Alternatively, run FileLogger.Shutdown and replace your logger with a new FileLogger.) */ type FileLogger struct { // StdLogger is used for the log formation and handling. See StdLogger for more details.