package logger import ( "io" "os" "github.com/gin-gonic/gin" "github.com/sirupsen/logrus" ) func Init() { levelStr := os.Getenv("LOG_LEVEL") level, err := logrus.ParseLevel(levelStr) if err != nil { level = logrus.InfoLevel } logrus.SetLevel(level) if level == logrus.DebugLevel { gin.SetMode(gin.DebugMode) } else { gin.SetMode(gin.ReleaseMode) gin.DisableConsoleColor() } logrus.SetFormatter(&logrus.JSONFormatter{ TimestampFormat: "2006-01-02 15:04:05", }) logrus.SetReportCaller(true) file, err := os.OpenFile("app.log", os.O_APPEND|os.O_CREATE|os.O_RDWR, 0666) if err != nil { logrus.SetOutput(os.Stdout) logrus.Errorf("Error to create log file: %v", err) } else { logrus.SetOutput(io.MultiWriter(os.Stdout, file)) } logrus.RegisterExitHandler(func() { if file != nil { file.Sync() file.Close() } }) }