mirror of
https://github.com/ManyakRus/crud_generator.git
synced 2024-12-23 12:44:13 +02:00
90 lines
2.1 KiB
Go
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)
|
|
}
|