From 422e2f683a1783b3c0b6083868be9a5f0a6f4577 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sun, 14 Apr 2024 11:16:17 +0200 Subject: [PATCH 1/2] Create Logger setup utility --- utilities/logger_setup.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 utilities/logger_setup.go diff --git a/utilities/logger_setup.go b/utilities/logger_setup.go new file mode 100644 index 0000000..9d7320d --- /dev/null +++ b/utilities/logger_setup.go @@ -0,0 +1,29 @@ +package utilities + +import ( + "fmt" + "io" + "log" + "os" + "time" + + "github.com/gin-gonic/gin" +) + +func SetupLogger(logToFileAndStd bool, logToFile bool) { + if logToFileAndStd || logToFile { + gin.DisableConsoleColor() // Disable Console Color, you don't need console color when writing the logs to file. + path := fmt.Sprintf("private/logs/%02dy_%02dm_%02dd_%02dh_%02dm_%02ds.log", time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Hour(), time.Now().Minute(), time.Now().Second()) + logerror1 := os.MkdirAll("private/logs/", 0755) + f, logerror2 := os.Create(path) + if logerror1 != nil || logerror2 != nil { + log.Println("Cant log to file") + } else if logToFileAndStd { + gin.DefaultWriter = io.MultiWriter(f, os.Stdout) + } else { + gin.DefaultWriter = io.MultiWriter(f) + } + } + log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile) + log.SetOutput(gin.DefaultErrorWriter) +} From 423e5502a7d9f273bd7600e9e9d02191e5befae0 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sun, 14 Apr 2024 11:16:34 +0200 Subject: [PATCH 2/2] Create http server setup utility --- utilities/server_setup.go | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 utilities/server_setup.go diff --git a/utilities/server_setup.go b/utilities/server_setup.go new file mode 100644 index 0000000..7107641 --- /dev/null +++ b/utilities/server_setup.go @@ -0,0 +1,40 @@ +package utilities + +import ( + "errors" + "log" + "net/http" + "time" +) + +func SetupHttpsServer(router http.Handler, cert, key, httpsPort, httpPort string, requestTimeout time.Duration) (server *http.Server) { + if FileExists(cert) && FileExists(key) { + server = &http.Server{ + Addr: httpsPort, + Handler: router, + ReadTimeout: 5 * time.Second, + WriteTimeout: 10 * time.Second, + } + go func() { + log.Println("Server starts at port ", httpsPort) + if err := server.ListenAndServeTLS(cert, key); err != nil && errors.Is(err, http.ErrServerClosed) { + log.Fatal(err) + } + }() + } else { + server = &http.Server{ + Addr: httpPort, + Handler: router, + ReadTimeout: requestTimeout * time.Second, + WriteTimeout: requestTimeout * time.Second, + } + go func() { + log.Println("Server starts at port ", httpPort) + if err := server.ListenAndServe(); err != nil && errors.Is(err, http.ErrServerClosed) { + log.Fatal(err) + } + }() + } + + return server +}