2021-02-26 15:52:29 -05:00
|
|
|
package logging
|
|
|
|
|
|
|
|
import (
|
2021-02-27 00:51:58 -05:00
|
|
|
"log"
|
|
|
|
"os"
|
2021-02-26 15:52:29 -05:00
|
|
|
)
|
|
|
|
|
2022-01-05 05:15:38 -05:00
|
|
|
/*
|
|
|
|
Logger is one of the various loggers offered by this module.
|
|
|
|
*/
|
2021-02-26 15:52:29 -05:00
|
|
|
type Logger interface {
|
2022-01-05 05:15:38 -05:00
|
|
|
Alert(s string, v ...interface{}) (err error)
|
|
|
|
Crit(s string, v ...interface{}) (err error)
|
|
|
|
Debug(s string, v ...interface{}) (err error)
|
|
|
|
Emerg(s string, v ...interface{}) (err error)
|
|
|
|
Err(s string, v ...interface{}) (err error)
|
|
|
|
Info(s string, v ...interface{}) (err error)
|
|
|
|
Notice(s string, v ...interface{}) (err error)
|
|
|
|
Warning(s string, v ...interface{}) (err error)
|
|
|
|
DoDebug(d bool)
|
|
|
|
SetPrefix(p string)
|
|
|
|
GetPrefix() (p string)
|
2021-02-26 20:27:35 -05:00
|
|
|
Setup()
|
|
|
|
Shutdown()
|
2021-02-26 15:52:29 -05:00
|
|
|
}
|
|
|
|
|
2022-01-05 05:15:38 -05:00
|
|
|
// StdLogger uses the log package in stdlib to perform all logging.
|
2021-02-26 15:52:29 -05:00
|
|
|
type StdLogger struct {
|
2022-01-05 05:15:38 -05:00
|
|
|
// All log.Logger fields/methods are exposed.
|
2021-02-26 20:27:35 -05:00
|
|
|
*log.Logger
|
2022-01-05 05:15:38 -05:00
|
|
|
/*
|
|
|
|
EnableDebug indicates if the debug filter should be disabled (true) or if the filter should be enabled (false).
|
|
|
|
This prevents potential data leak of sensitive information, as some loggers (e.g. FileLogger) will otherwise write all messages.
|
|
|
|
*/
|
2021-02-26 15:52:29 -05:00
|
|
|
EnableDebug bool
|
2022-01-05 05:15:38 -05:00
|
|
|
// Prefix indicates the prefix for log entries; in shared logs, this helps differentiate the source.
|
|
|
|
Prefix string
|
2021-02-26 15:52:29 -05:00
|
|
|
}
|
|
|
|
|
2022-01-05 05:15:38 -05:00
|
|
|
// FileLogger uses a StdLogger with a file handle writer to write to the file given at Path.
|
2021-02-26 15:52:29 -05:00
|
|
|
type FileLogger struct {
|
2022-01-05 05:15:38 -05:00
|
|
|
// StdLogger is used for the log formation and handling.
|
2021-02-26 15:52:29 -05:00
|
|
|
StdLogger
|
2022-01-05 05:15:38 -05:00
|
|
|
// Path is the path to the logfile.
|
|
|
|
Path string
|
|
|
|
// writer is used for the writing out of the log file.
|
2021-02-26 20:27:35 -05:00
|
|
|
writer *os.File
|
2021-02-26 15:52:29 -05:00
|
|
|
}
|
2022-01-05 05:15:38 -05:00
|
|
|
|
|
|
|
// MultiLogger is used to contain one or more Loggers and present them all as a single Logger.
|
|
|
|
type MultiLogger struct {
|
|
|
|
/*
|
|
|
|
EnableDebug indicates if the debug filter should be disabled (true) or if the filter should be enabled (false).
|
|
|
|
This prevents potential data leak of sensitive information, as some loggers (e.g. FileLogger) will otherwise write all messages.
|
|
|
|
*/
|
|
|
|
EnableDebug bool
|
|
|
|
// Prefix indicates the prefix for log entries; in shared logs, this helps differentiate the source.
|
|
|
|
Prefix string
|
|
|
|
/*
|
|
|
|
Loggers contains a map of map[logname]Logger. It can be used to set log-specific options, or replace a Logger
|
|
|
|
with one of a different type or options.
|
|
|
|
*/
|
|
|
|
Loggers map[string]Logger
|
|
|
|
}
|