mirror of
https://github.com/HDT3213/godis.git
synced 2025-10-07 09:41:05 +08:00
refactor project structure
This commit is contained in:
97
lib/logger/logger.go
Normal file
97
lib/logger/logger.go
Normal file
@@ -0,0 +1,97 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/hdt3213/godis/lib/files"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Settings struct {
|
||||
Path string `yaml:"path"`
|
||||
Name string `yaml:"name"`
|
||||
Ext string `yaml:"ext"`
|
||||
TimeFormat string `yaml:"time-format"`
|
||||
}
|
||||
|
||||
var (
|
||||
F *os.File
|
||||
DefaultPrefix = ""
|
||||
DefaultCallerDepth = 2
|
||||
logger *log.Logger
|
||||
logPrefix = ""
|
||||
levelFlags = []string{"DEBUG", "INFO", "WARN", "ERROR", "FATAL"}
|
||||
)
|
||||
|
||||
type Level int
|
||||
|
||||
const (
|
||||
DEBUG Level = iota
|
||||
INFO
|
||||
WARNING
|
||||
ERROR
|
||||
FATAL
|
||||
)
|
||||
|
||||
const flags = log.LstdFlags
|
||||
|
||||
func init() {
|
||||
logger = log.New(os.Stdout, DefaultPrefix, flags)
|
||||
}
|
||||
|
||||
func Setup(settings *Settings) {
|
||||
var err error
|
||||
dir := settings.Path
|
||||
fileName := fmt.Sprintf("%s-%s.%s",
|
||||
settings.Name,
|
||||
time.Now().Format(settings.TimeFormat),
|
||||
settings.Ext)
|
||||
|
||||
logFile, err := files.MustOpen(fileName, dir)
|
||||
if err != nil {
|
||||
log.Fatalf("logging.Setup err: %s", err)
|
||||
}
|
||||
|
||||
mw := io.MultiWriter(os.Stdout, logFile)
|
||||
logger = log.New(mw, DefaultPrefix, flags)
|
||||
}
|
||||
|
||||
func setPrefix(level Level) {
|
||||
_, file, line, ok := runtime.Caller(DefaultCallerDepth)
|
||||
if ok {
|
||||
logPrefix = fmt.Sprintf("[%s][%s:%d] ", levelFlags[level], filepath.Base(file), line)
|
||||
} else {
|
||||
logPrefix = fmt.Sprintf("[%s] ", levelFlags[level])
|
||||
}
|
||||
|
||||
logger.SetPrefix(logPrefix)
|
||||
}
|
||||
|
||||
func Debug(v ...interface{}) {
|
||||
setPrefix(DEBUG)
|
||||
logger.Println(v...)
|
||||
}
|
||||
|
||||
func Info(v ...interface{}) {
|
||||
setPrefix(INFO)
|
||||
logger.Println(v...)
|
||||
}
|
||||
|
||||
func Warn(v ...interface{}) {
|
||||
setPrefix(WARNING)
|
||||
logger.Println(v...)
|
||||
}
|
||||
|
||||
func Error(v ...interface{}) {
|
||||
setPrefix(ERROR)
|
||||
logger.Println(v...)
|
||||
}
|
||||
|
||||
func Fatal(v ...interface{}) {
|
||||
setPrefix(FATAL)
|
||||
logger.Fatalln(v...)
|
||||
}
|
Reference in New Issue
Block a user