90 lines
1.5 KiB
Go
90 lines
1.5 KiB
Go
package slog
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
)
|
|
|
|
type SLogLevel int
|
|
|
|
const (
|
|
ERROR SLogLevel = iota
|
|
WARN
|
|
INFO
|
|
DEBUG
|
|
)
|
|
|
|
type SLogger struct {
|
|
level SLogLevel
|
|
loggers []io.Writer
|
|
}
|
|
|
|
func NewSLogger() (ret *SLogger) {
|
|
ret = &SLogger{}
|
|
ret.level = ERROR
|
|
ret.loggers = []io.Writer{NewStdoutLogger()}
|
|
|
|
return ret
|
|
}
|
|
|
|
var DefaultSLog = NewSLogger()
|
|
|
|
func (sl *SLogger) Log(level SLogLevel, format string, a ...interface{}) {
|
|
if level > sl.level {
|
|
return
|
|
}
|
|
|
|
for _, l := range sl.loggers {
|
|
msg := fmt.Sprintf(format, a...)
|
|
l.Write([]byte(msg))
|
|
}
|
|
}
|
|
|
|
func LOG_ERROR(format string, a ...interface{}) {
|
|
DefaultSLog.Log(ERROR, "[ERROR] - "+format, a...)
|
|
}
|
|
|
|
func LOG_WARN(format string, a ...interface{}) {
|
|
DefaultSLog.Log(WARN, "[WARN] - "+format, a...)
|
|
}
|
|
|
|
func LOG_INFO(format string, a ...interface{}) {
|
|
DefaultSLog.Log(INFO, "[INFO] - "+format, a...)
|
|
}
|
|
|
|
func LOG_DEBUG(format string, a ...interface{}) {
|
|
DefaultSLog.Log(DEBUG, "[DEBUG] - "+format, a...)
|
|
}
|
|
|
|
func SET_LEVEL(level SLogLevel) {
|
|
DefaultSLog.SetLevel(level)
|
|
}
|
|
|
|
func ADD_LOGGER(logger io.Writer) {
|
|
DefaultSLog.AddLogger(logger)
|
|
}
|
|
|
|
func SET_LOGGERS(loggers []io.Writer) {
|
|
DefaultSLog.SetLoggers(loggers)
|
|
}
|
|
|
|
func CLEAR_LOGGERS() {
|
|
DefaultSLog.ClearLoggers()
|
|
}
|
|
|
|
func (sl *SLogger) SetLevel(level SLogLevel) {
|
|
sl.level = level
|
|
}
|
|
|
|
func (sl *SLogger) AddLogger(logger io.Writer) {
|
|
sl.loggers = append(sl.loggers, logger)
|
|
}
|
|
|
|
func (sl *SLogger) SetLoggers(loggers []io.Writer) {
|
|
sl.loggers = loggers
|
|
}
|
|
|
|
func (sl *SLogger) ClearLoggers() {
|
|
sl.loggers = []io.Writer{}
|
|
}
|