mirror of
http://code.dnix.de/an/xlog
synced 2026-07-27 07:09:44 +02:00
...
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
// vi:ts=4:sts=4:sw=4:noet:tw=72
|
||||
|
||||
package xlog
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"runtime"
|
||||
)
|
||||
|
||||
const (
|
||||
FATAL = iota
|
||||
ERROR
|
||||
WARNING
|
||||
INFO
|
||||
DEBUG
|
||||
)
|
||||
|
||||
var levelNames = map[int]string{
|
||||
FATAL: "[FAT] ",
|
||||
ERROR: "[ERR] ",
|
||||
WARNING: "[WRN] ",
|
||||
INFO: "[INF] ",
|
||||
DEBUG: "[DBG] ",
|
||||
}
|
||||
|
||||
var logLevel int
|
||||
var logger *log.Logger
|
||||
|
||||
type LogWriter struct {
|
||||
}
|
||||
|
||||
func (w *LogWriter) Write(buf []byte) (int, error) {
|
||||
fmt.Printf("%s", string(buf))
|
||||
return len(buf), nil
|
||||
}
|
||||
|
||||
func Init(lvl int) {
|
||||
logger = log.New(&LogWriter{}, "", log.Ldate|log.Ltime)
|
||||
logLevel = lvl
|
||||
}
|
||||
|
||||
func Log(lvl int, s string, a ...interface{}) {
|
||||
if lvl <= logLevel {
|
||||
_, file, line, ok := runtime.Caller(2)
|
||||
if !ok {
|
||||
file = "???"
|
||||
} else {
|
||||
short := file
|
||||
for i := len(file) - 1; i > 0; i-- {
|
||||
if file[i] == '/' {
|
||||
short = file[i+1:]
|
||||
break
|
||||
}
|
||||
}
|
||||
file = short
|
||||
}
|
||||
l := fmt.Sprintf("%d", line)
|
||||
logger.Printf(levelNames[lvl]+file+":"+l+": "+s, a...)
|
||||
}
|
||||
}
|
||||
|
||||
func Debug(s string, a ...interface{}) {
|
||||
Log(DEBUG, s, a...)
|
||||
}
|
||||
|
||||
func Info(s string, a ...interface{}) {
|
||||
Log(INFO, s, a...)
|
||||
}
|
||||
|
||||
func Warning(s string, a ...interface{}) {
|
||||
Log(WARNING, s, a...)
|
||||
}
|
||||
|
||||
func Error(s string, a ...interface{}) {
|
||||
Log(ERROR, s, a...)
|
||||
}
|
||||
|
||||
func Fatal(s string, a ...interface{}) {
|
||||
Log(FATAL, s, a...)
|
||||
os.Exit(0)
|
||||
}
|
||||
Reference in New Issue
Block a user