2 Commits

Author SHA1 Message Date
a445a51c0d Adding GetDebug method to loggers. 2022-09-07 06:03:28 -04:00
a2a849600b Add docs for NullLogger. 2022-09-06 01:01:39 -04:00
9 changed files with 149 additions and 90 deletions

View File

@@ -3,18 +3,19 @@ Package logging implements and presents various loggers under a unified interfac
These particular loggers (logging.Logger) available are:
NullLogger
StdLogger
FileLogger
SystemDLogger (Linux only)
SyslogLogger (Linux only)
WinLogger (Windows only)
There is a sixth type of logging.Logger, MultiLogger, that allows for multiple loggers to be written to with a single call.
There is a seventh type of logging.Logger, MultiLogger, that allows for multiple loggers to be written to with a single call.
As you may have guessed, NullLogger doesn't actually log anything but is fully "functional" as a logging.Logger.
Note that for some Loggers, the prefix may be modified - "literal" loggers (StdLogger and FileLogger) will append a space to the end of the prefix.
If this is undesired (unlikely), you will need to modify (Logger).Prefix and run (Logger).Logger.SetPrefix(yourPrefixHere) for the respective logger.
Every logging.Logger type has the following methods that correspond to certain "levels".
Alert(s string, v ...interface{}) (err error)
@@ -36,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.
@@ -65,6 +65,14 @@ 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.

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.
@@ -114,6 +114,14 @@ func (m *MultiLogger) DoDebug(d bool) (err error) {
return
}
// GetDebug returns the debug status of this MultiLogger.
func (m *MultiLogger) GetDebug() (d bool) {
d = m.EnableDebug
return
}
/*
SetPrefix sets the prefix for this MultiLogger (and all its MultiLogger.Loggers).

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,10 +2,10 @@ package logging
import (
"fmt"
`io`
`log`
`os`
`strings`
"io"
"log"
"os"
"strings"
)
/*
@@ -80,6 +80,14 @@ 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.

View File

@@ -52,6 +52,14 @@ 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.

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.
@@ -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,15 +1,15 @@
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"
)
/*
@@ -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

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