From 94b766f106f97ed27652f586223b5ee25333b91e Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 17 Dec 2024 15:45:40 +0100 Subject: [PATCH] feat(logger): Log levels --- .env | 1 + main.go | 45 +++++++++++++++++++++++++++++++++++++-------- models/config.go | 1 + 3 files changed, 39 insertions(+), 8 deletions(-) diff --git a/.env b/.env index 205f5fe..54d3ba7 100644 --- a/.env +++ b/.env @@ -1,3 +1,4 @@ +LOGLEVEL=debug PORT=3000 PRODUCION=false APIKEY=lfk diff --git a/main.go b/main.go index 8d485fe..4565742 100644 --- a/main.go +++ b/main.go @@ -3,6 +3,8 @@ package main import ( "crypto/sha256" "crypto/subtle" + "os" + "strings" "git.odit.services/lfk/document-server/docs" // Correct import path for docs "git.odit.services/lfk/document-server/handlers" @@ -16,6 +18,7 @@ import ( "github.com/redis/go-redis/v9" "github.com/spf13/viper" "go.uber.org/zap" + "go.uber.org/zap/zapcore" ) var ( @@ -35,7 +38,8 @@ func validateAPIKey(c *fiber.Ctx, key string) (bool, error) { func loadEnv() error { - viper.SetDefault("PRODUCION", true) + viper.SetDefault("LOGLEVEL", "INFO") + viper.SetDefault("PRODUCION", false) viper.SetDefault("PORT", "3000") viper.SetDefault("APIKEY", "lfk") viper.SetDefault("EVENTNAME", "Demo Event") @@ -67,7 +71,32 @@ func loadEnv() error { return err } - logger.Infow("Loaded config", config) + logger.Infow("Loaded config", "config", &config) + + return nil +} + +func initLogger() error { + logLevel := os.Getenv("LOGLEVEL") + if logLevel == "" { + logLevel = "INFO" + } + + var zapLogLevel zapcore.Level + err := zapLogLevel.UnmarshalText([]byte(strings.ToLower(logLevel))) + if err != nil { + zapLogLevel = zapcore.InfoLevel + } + + zapConfig := zap.NewProductionConfig() + zapConfig.Level = zap.NewAtomicLevelAt(zapLogLevel) + zapLogger, err := zapConfig.Build() + if err != nil { + return err + } + + defer zapLogger.Sync() + logger = zapLogger.Sugar() return nil } @@ -85,12 +114,12 @@ func loadEnv() error { func main() { // Init the logger - zapLogger, _ := zap.NewProduction() - defer zapLogger.Sync() - logger = zapLogger.Sugar() - logger.Info("Logger initialized") + err := initLogger() + if err != nil { + return + } - err := loadEnv() + err = loadEnv() if err != nil { logger.Error(err) return @@ -98,7 +127,7 @@ func main() { var redisClient *redis.Client if config.RedisAddr != "" { - logger.Infow("Using redis", config.RedisAddr) + logger.Infow("Using redis", "redisAddr", config.RedisAddr) redisClient = redis.NewClient(&redis.Options{ Addr: config.RedisAddr, }) diff --git a/models/config.go b/models/config.go index 8d2313c..24ae6bc 100644 --- a/models/config.go +++ b/models/config.go @@ -1,6 +1,7 @@ package models type Config struct { + LogLevel string `mapstructure:"LOGLEVEL"` Prod bool `mapstructure:"PRODUCION"` Port string `mapstructure:"PORT"` APIKey string `mapstructure:"APIKEY"`