12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- package logging
- import (
- "fmt"
- "github.com/EDDYCJY/go-gin-example/pkg/file"
- "log"
- "os"
- "path/filepath"
- "runtime"
- )
- type Level int
- var (
- F *os.File
- DefaultPrefix = ""
- DefaultCallerDepth = 2
- logger *log.Logger
- logPrefix = ""
- levelFlags = []string{"DEBUG", "INFO", "WARN", "ERROR", "FATAL"}
- )
- const (
- DEBUG Level = iota
- INFO
- WARNING
- ERROR
- FATAL
- )
- // Setup initialize the log instance
- func Setup() {
- var err error
- filePath := getLogFilePath()
- fileName := getLogFileName()
- F, err = file.MustOpen(fileName, filePath)
- if err != nil {
- log.Fatalf("logging.Setup err: %v", err)
- }
- logger = log.New(F, DefaultPrefix, log.LstdFlags)
- }
- // Debug output logs at debug level
- func Debug(v ...interface{}) {
- setPrefix(DEBUG)
- logger.Println(v)
- log.Println(v)
- }
- // Info output logs at info level
- func Info(v ...interface{}) {
- setPrefix(INFO)
- logger.Println(v)
- log.Println(v)
- }
- // Warn output logs at warn level
- func Warn(v ...interface{}) {
- setPrefix(WARNING)
- logger.Println(v)
- log.Println(v)
- }
- // Error output logs at error level
- func Error(v ...interface{}) {
- setPrefix(ERROR)
- logger.Println(v)
- log.Println(v)
- }
- // Fatal output logs at fatal level
- func Fatal(v ...interface{}) {
- setPrefix(FATAL)
- logger.Fatalln(v)
- log.Println(v)
- }
- // setPrefix set the prefix of the log output
- 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)
- }
|