Adding GetDebug method to loggers.

This commit is contained in:
brent s. 2022-09-07 06:03:28 -04:00
parent a2a849600b
commit a445a51c0d
Signed by: bts
GPG Key ID: 8C004C2F93481F6B
9 changed files with 141 additions and 83 deletions

View File

@ -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)

View File

@ -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) {


View File

@ -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) {


View File

@ -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

View File

@ -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) {


View File

@ -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) {


View File

@ -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) {


View File

@ -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) {


View File

@ -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.