You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
1.6 KiB
100 lines
1.6 KiB
5 years ago
|
package log
|
||
|
|
||
|
import (
|
||
4 years ago
|
"fmt"
|
||
|
"io"
|
||
|
"log"
|
||
5 years ago
|
"os"
|
||
|
)
|
||
|
|
||
4 years ago
|
type Level int
|
||
5 years ago
|
|
||
4 years ago
|
const (
|
||
|
LevelDebug Level = iota
|
||
|
LevelWarn
|
||
|
LevelError
|
||
|
)
|
||
5 years ago
|
|
||
4 years ago
|
func (l Level) String() string {
|
||
|
switch l {
|
||
|
case LevelDebug:
|
||
|
return "debug"
|
||
|
case LevelError:
|
||
|
return "error"
|
||
5 years ago
|
}
|
||
4 years ago
|
return ""
|
||
5 years ago
|
}
|
||
|
|
||
4 years ago
|
var (
|
||
|
formatLogger *Logger
|
||
|
levelMap = map[string]Level{
|
||
|
"debug": LevelDebug,
|
||
|
"error": LevelError,
|
||
5 years ago
|
}
|
||
4 years ago
|
)
|
||
5 years ago
|
|
||
4 years ago
|
func InitLog(l string) {
|
||
|
formatLogger = newLog(os.Stdout).setLevel(levelMap[l]).setFlags(log.Lshortfile)
|
||
5 years ago
|
}
|
||
|
|
||
4 years ago
|
type Logger struct {
|
||
|
level Level
|
||
|
l *log.Logger
|
||
5 years ago
|
}
|
||
|
|
||
4 years ago
|
func newLog(w io.Writer) *Logger {
|
||
|
return &Logger{
|
||
|
l: log.New(w, "", 0),
|
||
|
}
|
||
5 years ago
|
}
|
||
|
|
||
4 years ago
|
func (l *Logger) setFlags(flag int) *Logger {
|
||
|
l.l.SetFlags(flag)
|
||
|
return l
|
||
5 years ago
|
}
|
||
|
|
||
4 years ago
|
func (l *Logger) setLevel(level Level) *Logger {
|
||
|
l.level = level
|
||
|
return l
|
||
5 years ago
|
}
|
||
|
|
||
4 years ago
|
func (l *Logger) doLog(level Level, v ...interface{}) bool {
|
||
|
if level < l.level {
|
||
|
return false
|
||
|
}
|
||
|
l.l.Output(3, level.String()+" "+fmt.Sprintln(v...))
|
||
|
return true
|
||
5 years ago
|
}
|
||
|
|
||
4 years ago
|
func (l *Logger) doLogf(level Level, format string, v ...interface{}) bool {
|
||
|
if level < l.level {
|
||
|
return false
|
||
|
}
|
||
|
l.l.Output(3, level.String()+" "+fmt.Sprintln(fmt.Sprintf(format, v...)))
|
||
|
return true
|
||
5 years ago
|
}
|
||
|
|
||
4 years ago
|
func Debug(v ...interface{}) {
|
||
|
formatLogger.doLog(LevelDebug, v...)
|
||
5 years ago
|
}
|
||
|
|
||
4 years ago
|
func Warn(v ...interface{}) {
|
||
|
formatLogger.doLog(LevelWarn, v...)
|
||
5 years ago
|
}
|
||
|
|
||
4 years ago
|
func Error(v ...interface{}) {
|
||
|
formatLogger.doLog(LevelError, v...)
|
||
5 years ago
|
}
|
||
|
|
||
4 years ago
|
func Errorf(format string, v ...interface{}) {
|
||
|
formatLogger.doLogf(LevelError, format, v...)
|
||
5 years ago
|
}
|
||
|
|
||
4 years ago
|
func Warnf(format string, v ...interface{}) {
|
||
|
formatLogger.doLogf(LevelWarn, format, v...)
|
||
5 years ago
|
}
|
||
|
|
||
4 years ago
|
func Debugf(format string, v ...interface{}) {
|
||
|
formatLogger.doLogf(LevelDebug, format, v...)
|
||
5 years ago
|
}
|