mirror/merlin/common/logger.go

63 lines
993 B
Go

package common
import (
"log"
"os"
)
type Logger struct {
*log.Logger
name string
}
const (
// verbose
// DEBUG = 1 << iota
DEBUG = iota
// normal operation
INFO
// bad
WARNING
// really bad (crash)
ERROR
)
var levels = map[int]string{
DEBUG: "DEBUG",
INFO: "INFO",
WARNING: "WARNING",
ERROR: "ERROR",
}
func NewLogger(name string) *Logger {
logger := Logger{
Logger: log.New(os.Stderr, "", 0),
name: name,
}
return &logger
}
func (logger *Logger) Log(level int, v ...interface{}) {
levelStr := levels[level]
// TODO: add date + time
args := []interface{}{levelStr + ":", logger.name + ":"}
args = append(args, v...)
logger.Println(args...)
}
func (logger *Logger) Debug(v ...interface{}) {
logger.Log(DEBUG, v...)
}
func (logger *Logger) Info(v ...interface{}) {
logger.Log(INFO, v...)
}
func (logger *Logger) Warning(v ...interface{}) {
logger.Log(WARNING, v...)
}
func (logger *Logger) Error(v ...interface{}) {
logger.Log(ERROR, v...)
}