Basic interface

This commit is contained in:
Matthias Fulz 2020-01-22 02:11:50 +01:00
parent aae05d71d2
commit a334e57ece
1 changed files with 68 additions and 0 deletions

68
slog.go Normal file
View File

@ -0,0 +1,68 @@
package slog
import (
"fmt"
"io"
"os"
)
type SLogLevel int
const (
ERROR SLogLevel = iota
WARN
INFO
DEBUG
)
var level = ERROR
var loggers = []io.Writer{os.Stdout}
func log(level SLogLevel, format string, a ...interface{}) (err error) {
err = nil
if level > level {
return err
}
for _, l := range loggers {
msg := fmt.Sprintf(format, a...)
if _, err = l.Write([]byte(msg)); err != nil {
return err
}
}
return err
}
func LOG_ERROR(format string, a ...interface{}) {
log(ERROR, "[ERROR] - "+format, a...)
}
func LOG_WARN(format string, a ...interface{}) {
log(WARN, "[WARN] - "+format, a...)
}
func LOG_INFO(format string, a ...interface{}) {
log(INFO, "[INFO] - "+format, a...)
}
func LOG_DEBUG(format string, a ...interface{}) {
log(DEBUG, "[DEBUG] - "+format, a...)
}
func SetLevel(level SLogLevel) {
level = level
}
func AddLogger(logger io.Writer) {
loggers = append(loggers, logger)
}
func SetLoggers(loggers []io.Writer) {
loggers = loggers
}
func ClearLoggers() {
loggers = []io.Writer{}
}