138 lines
3.2 KiB
Go
138 lines
3.2 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"io"
|
||
|
"log"
|
||
|
)
|
||
|
|
||
|
// Loglevel is used to set the current loglevel of Logger.
|
||
|
type Loglevel int
|
||
|
|
||
|
const (
|
||
|
// NONE is a loglevel for Logger.
|
||
|
NONE Loglevel = 0
|
||
|
// ERROR is a loglevel for Logger.
|
||
|
ERROR Loglevel = 1
|
||
|
// WARN is a loglevel for Logger.
|
||
|
WARN Loglevel = 2
|
||
|
// INFO is a loglevel for Logger.
|
||
|
INFO Loglevel = 3
|
||
|
// DEBUG is a loglevel for Logger.
|
||
|
DEBUG Loglevel = 4
|
||
|
)
|
||
|
|
||
|
// Logger uses multiple instances of log.Logger to provide logging methods for multiple loglevels.
|
||
|
type Logger struct {
|
||
|
debug *log.Logger
|
||
|
info *log.Logger
|
||
|
warn *log.Logger
|
||
|
error *log.Logger
|
||
|
logDebug bool
|
||
|
logInfo bool
|
||
|
logWarn bool
|
||
|
logError bool
|
||
|
}
|
||
|
|
||
|
// NewLogger prepares a new instance of Logger for custom use.
|
||
|
func NewLogger(stdOut io.Writer, stdErr io.Writer, logLevel Loglevel) Logger {
|
||
|
newLogger := Logger{}
|
||
|
newLogger.debug = log.New(stdOut, "DEBUG ", 0)
|
||
|
newLogger.info = log.New(stdOut, "INFO ", 0)
|
||
|
newLogger.warn = log.New(stdErr, "WARN ", 0)
|
||
|
newLogger.error = log.New(stdErr, "ERROR ", 0)
|
||
|
newLogger.SetLogLevel(logLevel)
|
||
|
return newLogger
|
||
|
}
|
||
|
|
||
|
// SetLogLevel can be used to change the loglevel of Logger on the fly.
|
||
|
func (l *Logger) SetLogLevel(logLevel Loglevel) {
|
||
|
l.logDebug = (logLevel >= DEBUG)
|
||
|
l.logInfo = (logLevel >= INFO)
|
||
|
l.logWarn = (logLevel >= WARN)
|
||
|
l.logError = (logLevel >= ERROR)
|
||
|
}
|
||
|
|
||
|
// Debug is an alias for log.Logger.Print() with severity DEBUG.
|
||
|
func (l *Logger) Debug(v ...interface{}) {
|
||
|
if l.logDebug {
|
||
|
l.debug.Print(v...)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Debugln is an alias for log.Logger.Println() with severity DEBUG.
|
||
|
func (l *Logger) Debugln(v ...interface{}) {
|
||
|
if l.logDebug {
|
||
|
l.debug.Println(v...)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Debugf is an alias for log.Logger.Printf() with severity DEBUG.
|
||
|
func (l *Logger) Debugf(format string, v ...interface{}) {
|
||
|
if l.logDebug {
|
||
|
l.debug.Printf(format, v...)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Info is an alias for log.Logger.Print() with severity INFO.
|
||
|
func (l *Logger) Info(v ...interface{}) {
|
||
|
if l.logInfo {
|
||
|
l.info.Print(v...)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Infoln is an alias for log.Logger.Println() with severity INFO.
|
||
|
func (l *Logger) Infoln(v ...interface{}) {
|
||
|
if l.logInfo {
|
||
|
l.info.Println(v...)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Infof is an alias for log.Logger.Printf() with severity INFO.
|
||
|
func (l *Logger) Infof(format string, v ...interface{}) {
|
||
|
if l.logInfo {
|
||
|
l.info.Printf(format, v...)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Warn is an alias for log.Logger.Print() with severity WARN.
|
||
|
func (l *Logger) Warn(v ...interface{}) {
|
||
|
if l.logWarn {
|
||
|
l.warn.Print(v...)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Warnln is an alias for log.Logger.Println() with severity WARN.
|
||
|
func (l *Logger) Warnln(v ...interface{}) {
|
||
|
if l.logWarn {
|
||
|
l.warn.Println(v...)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Warnf is an alias for log.Logger.Printf() with severity WARN.
|
||
|
func (l *Logger) Warnf(format string, v ...interface{}) {
|
||
|
if l.logWarn {
|
||
|
l.warn.Printf(format, v...)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Error is an alias for log.Logger.Print() with severity ERROR.
|
||
|
func (l *Logger) Error(v ...interface{}) {
|
||
|
if l.logError {
|
||
|
l.error.Print(v...)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Errorln is an alias for log.Logger.Println() with severity ERROR.
|
||
|
func (l *Logger) Errorln(v ...interface{}) {
|
||
|
if l.logError {
|
||
|
l.error.Println(v...)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Errorf is an alias for log.Logger.Printf() with severity ERROR.
|
||
|
func (l *Logger) Errorf(format string, v ...interface{}) {
|
||
|
if l.logError {
|
||
|
l.error.Printf(format, v...)
|
||
|
}
|
||
|
}
|