126 lines
2.4 KiB
Go
126 lines
2.4 KiB
Go
package log
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
const (
|
|
LevelTrace = iota
|
|
LevelDebug
|
|
LevelInfo
|
|
LevelWarn
|
|
LevelError
|
|
LevelFatal
|
|
)
|
|
|
|
var LevelName [6]string = [6]string{"Trace", "Debug", "Info", "Warn", "Error", "Fatal"}
|
|
|
|
type Logger struct {
|
|
logger *log.Logger
|
|
level int
|
|
handler Handler
|
|
}
|
|
|
|
const (
|
|
Ldate = log.Ldate
|
|
Ltime = log.Ltime
|
|
Lmicroseconds = log.Lmicroseconds
|
|
Llongfile = log.Llongfile
|
|
Lshortfile = log.Lshortfile
|
|
LstdFlags = Ldate | Ltime
|
|
)
|
|
|
|
func New(handler Handler, flag int) *Logger {
|
|
var l = new(Logger)
|
|
l.logger = log.New(handler, "", flag) //log.LstdFlags|log.Lshortfile)
|
|
l.level = LevelInfo
|
|
l.handler = handler
|
|
|
|
return l
|
|
}
|
|
|
|
func NewDefault(handler Handler) *Logger {
|
|
return New(handler, log.LstdFlags|log.Lshortfile)
|
|
}
|
|
|
|
func newStdHandler() *StreamHandler {
|
|
h, _ := NewDefaultStreamHandler(os.Stdout)
|
|
return h
|
|
}
|
|
|
|
var std = NewDefault(newStdHandler())
|
|
|
|
func (l *Logger) Close() {
|
|
l.handler.Close()
|
|
}
|
|
|
|
func (l *Logger) SetLevel(level int) {
|
|
l.level = level
|
|
}
|
|
|
|
func (l *Logger) Output(callDepth int, level int, format string, v ...interface{}) {
|
|
if l.level <= level {
|
|
f := fmt.Sprintf("[%s] %s", LevelName[level], format)
|
|
s := fmt.Sprintf(f, v...)
|
|
l.logger.Output(callDepth, s)
|
|
}
|
|
}
|
|
|
|
func (l *Logger) Write(s string) {
|
|
l.logger.Output(3, s)
|
|
}
|
|
|
|
func (l *Logger) Trace(format string, v ...interface{}) {
|
|
l.Output(3, LevelTrace, format, v...)
|
|
}
|
|
|
|
func (l *Logger) Debug(format string, v ...interface{}) {
|
|
l.Output(3, LevelDebug, format, v...)
|
|
}
|
|
|
|
func (l *Logger) Info(format string, v ...interface{}) {
|
|
l.Output(3, LevelInfo, format, v...)
|
|
}
|
|
|
|
func (l *Logger) Warn(format string, v ...interface{}) {
|
|
l.Output(3, LevelWarn, format, v...)
|
|
}
|
|
|
|
func (l *Logger) Error(format string, v ...interface{}) {
|
|
l.Output(3, LevelError, format, v...)
|
|
}
|
|
|
|
func (l *Logger) Fatal(format string, v ...interface{}) {
|
|
l.Output(3, LevelFatal, format, v...)
|
|
}
|
|
|
|
func SetLevel(level int) {
|
|
std.SetLevel(level)
|
|
}
|
|
|
|
func Trace(format string, v ...interface{}) {
|
|
std.Output(3, LevelTrace, format, v...)
|
|
}
|
|
|
|
func Debug(format string, v ...interface{}) {
|
|
std.Output(3, LevelDebug, format, v...)
|
|
}
|
|
|
|
func Info(format string, v ...interface{}) {
|
|
std.Output(3, LevelInfo, format, v...)
|
|
}
|
|
|
|
func Warn(format string, v ...interface{}) {
|
|
std.Output(3, LevelWarn, format, v...)
|
|
}
|
|
|
|
func Error(format string, v ...interface{}) {
|
|
std.Output(3, LevelError, format, v...)
|
|
}
|
|
|
|
func Fatal(format string, v ...interface{}) {
|
|
std.Output(3, LevelFatal, format, v...)
|
|
}
|