logging/logging.go

71 lines
1.2 KiB
Go
Raw Normal View History

2013-06-21 18:35:47 +02:00
package logging
import (
"errors"
2013-06-21 18:35:47 +02:00
"fmt"
"strings"
)
var loggers map[string]*Logger
2013-06-21 18:35:47 +02:00
type Level byte
const (
DEBUG Level = iota
INFO
WARNING
ERROR
CRITICAL
FATAL
DEFAULT_LEVEL = INFO
)
var levelNames = [6]string{"DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL", "FATAL"}
func (l Level) Name() string {
return levelNames[l]
}
func LevelByName(l string) (Level, error) {
for pos, name := range levelNames {
if name == l {
return Level(pos), nil
}
}
return DEBUG, errors.New(fmt.Sprintf("Invalid log level %s", l))
}
2013-06-21 18:35:47 +02:00
type Formatter func(*Record) string
func GetLogger(name string) (l *Logger) {
if name == "" {
name = "default"
}
l, ok := loggers[name]
if !ok {
l = NewLogger(name)
backend := NewStdoutBackend()
l.AddBackend(backend)
l.SetLevel(DEBUG)
loggers[name] = l
}
return l
2013-06-21 18:35:47 +02:00
}
var defaultFormatter Formatter = func(r *Record) string {
return fmt.Sprintf("%s [%s] %s: %s\n",
r.Timestamp.Format("2006/01/02 15:04:05"), r.Level.Name(), r.Logger,
2013-06-21 18:35:47 +02:00
strings.TrimSpace(r.Message))
}
func init() {
loggers = make(map[string]*Logger, 3)
logger := NewLogger("default")
2013-06-21 18:35:47 +02:00
backend := NewStdoutBackend()
logger.AddBackend(backend)
logger.SetLevel(DEBUG)
loggers["default"] = logger
2013-06-21 18:35:47 +02:00
}