1
0
mirror of https://github.com/ManyakRus/crud_generator.git synced 2024-12-23 12:44:13 +02:00
crud_generator/vendor/github.com/ManyakRus/starter/logger/logger.go
Nikitin Aleksandr b7446dc946 новый
2023-09-28 17:45:44 +03:00

90 lines
2.1 KiB
Go

// модуль создания единого логирования
package logger
import (
"os"
"path"
"runtime"
"strconv"
"sync"
//"github.com/google/logger"
//"github.com/sirupsen/logrus"
logrus "github.com/ManyakRus/logrus"
"github.com/ManyakRus/starter/micro"
)
// log - глобальный логгер приложения
var log *logrus.Logger
// onceLog - гарантирует единственное создание логгера
var onceLog sync.Once
// GetLog - возвращает глобальный логгер приложения
// и создаёт логгер если ещё не создан
func GetLog() *logrus.Logger {
onceLog.Do(func() {
log = logrus.New()
log.SetReportCaller(true)
Formatter := new(logrus.TextFormatter)
Formatter.TimestampFormat = "2006-01-02 15:04:05.000"
Formatter.FullTimestamp = true
Formatter.CallerPrettyfier = CallerPrettyfier
log.SetFormatter(Formatter)
LOG_LEVEL := os.Getenv("LOG_LEVEL")
SetLevel(LOG_LEVEL)
//LOG_FILE := "log.txt"
//file, err := os.OpenFile(LOG_FILE, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0755)
//if err != nil {
// log.Fatal(err)
//}
////defer file.Close()
//
//mw := io.MultiWriter(os.Stderr, file)
//logrus.SetOutput(mw)
//log.SetOutput(os.Stdout)
//log.SetOutput(file)
})
return log
}
// CallerPrettyfier - форматирует имя файла и номер строки кода
func CallerPrettyfier(frame *runtime.Frame) (function string, file string) {
fileName := " " + path.Base(frame.File) + ":" + strconv.Itoa(frame.Line) + "\t"
FunctionName := frame.Function
FunctionName = micro.LastWord(FunctionName)
FunctionName = FunctionName + "()" + "\t"
return FunctionName, fileName
}
// SetLevel - изменяет уровень логирования
func SetLevel(LOG_LEVEL string) {
if log == nil {
GetLog()
}
if LOG_LEVEL == "" {
LOG_LEVEL = "debug"
}
level, err := logrus.ParseLevel(LOG_LEVEL)
if err != nil {
log.Error("logrus.ParseLevel() error: ", err)
}
if level == log.Level {
return
}
log.SetLevel(level)
log.Debug("new level: ", LOG_LEVEL)
}