From b8524735aaba79121199b907a749c3648959a126 Mon Sep 17 00:00:00 2001 From: "Arrobo, Gabriel" Date: Fri, 21 Nov 2025 11:25:47 -0800 Subject: [PATCH 1/2] Refactor setting the logging level Signed-off-by: Arrobo, Gabriel --- go.mod | 2 +- service/init.go | 111 +++++++++++++++--------------------------------- 2 files changed, 35 insertions(+), 78 deletions(-) diff --git a/go.mod b/go.mod index 3c2c2665..d10e29c6 100644 --- a/go.mod +++ b/go.mod @@ -16,6 +16,7 @@ require ( github.com/urfave/cli/v3 v3.6.1 github.com/wmnsk/go-pfcp v0.0.24 go.mongodb.org/mongo-driver v1.17.6 + go.uber.org/zap v1.27.1 go.yaml.in/yaml/v4 v4.0.0-rc.3 ) @@ -60,7 +61,6 @@ require ( github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect go.uber.org/mock v0.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.27.1 go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/arch v0.20.0 // indirect golang.org/x/crypto v0.43.0 // indirect diff --git a/service/init.go b/service/init.go index 8b272647..9b35b294 100644 --- a/service/init.go +++ b/service/init.go @@ -123,86 +123,17 @@ func (smf *SMF) Initialize(c *cli.Command) error { } func (smf *SMF) setLogLevel() { - if factory.SmfConfig.Logger == nil { - logger.InitLog.Warnln("SMF config without log level setting") + cfgLogger := factory.SmfConfig.Logger + if cfgLogger == nil { + logger.InitLog.Warnln("SMF config without log level setting, defaulting to `info`") return } - if factory.SmfConfig.Logger.SMF != nil { - if factory.SmfConfig.Logger.SMF.DebugLevel != "" { - if level, err := zapcore.ParseLevel(factory.SmfConfig.Logger.SMF.DebugLevel); err != nil { - logger.InitLog.Warnf("SMF Log level [%s] is invalid, set to [info] level", - factory.SmfConfig.Logger.SMF.DebugLevel) - logger.SetLogLevel(zap.InfoLevel) - } else { - logger.InitLog.Infof("SMF Log level is set to [%s] level", level) - logger.SetLogLevel(level) - } - } else { - logger.InitLog.Infoln("SMF Log level is default set to [info] level") - logger.SetLogLevel(zap.InfoLevel) - } - } - - if factory.SmfConfig.Logger.NAS != nil { - if factory.SmfConfig.Logger.NAS.DebugLevel != "" { - if level, err := zapcore.ParseLevel(factory.SmfConfig.Logger.NAS.DebugLevel); err != nil { - nasLogger.NasLog.Warnf("NAS Log level [%s] is invalid, set to [info] level", - factory.SmfConfig.Logger.NAS.DebugLevel) - logger.SetLogLevel(zap.InfoLevel) - } else { - nasLogger.SetLogLevel(level) - } - } else { - nasLogger.NasLog.Warnln("NAS Log level not set. Default set to [info] level") - nasLogger.SetLogLevel(zap.InfoLevel) - } - } - - if factory.SmfConfig.Logger.NGAP != nil { - if factory.SmfConfig.Logger.NGAP.DebugLevel != "" { - if level, err := zapcore.ParseLevel(factory.SmfConfig.Logger.NGAP.DebugLevel); err != nil { - ngapLogger.NgapLog.Warnf("NGAP Log level [%s] is invalid, set to [info] level", - factory.SmfConfig.Logger.NGAP.DebugLevel) - ngapLogger.SetLogLevel(zap.InfoLevel) - } else { - ngapLogger.SetLogLevel(level) - } - } else { - ngapLogger.NgapLog.Warnln("NGAP Log level not set. Default set to [info] level") - ngapLogger.SetLogLevel(zap.InfoLevel) - } - } - - if factory.SmfConfig.Logger.OpenApi != nil { - if factory.SmfConfig.Logger.OpenApi.DebugLevel != "" { - if level, err := zapcore.ParseLevel(factory.SmfConfig.Logger.OpenApi.DebugLevel); err != nil { - openapiLogger.OpenapiLog.Warnf("OpenApi Log level [%s] is invalid, set to [info] level", - factory.SmfConfig.Logger.OpenApi.DebugLevel) - openapiLogger.SetLogLevel(zap.InfoLevel) - } else { - openapiLogger.SetLogLevel(level) - } - } else { - openapiLogger.OpenapiLog.Warnln("OpenApi Log level not set. Default set to [info] level") - openapiLogger.SetLogLevel(zap.InfoLevel) - } - } - - if factory.SmfConfig.Logger.Util != nil { - if factory.SmfConfig.Logger.Util.DebugLevel != "" { - if level, err := zapcore.ParseLevel(factory.SmfConfig.Logger.Util.DebugLevel); err != nil { - utilLogger.UtilLog.Warnf("Util (drsm, fsm, etc.) Log level [%s] is invalid, set to [info] level", - factory.SmfConfig.Logger.Util.DebugLevel) - utilLogger.SetLogLevel(zap.InfoLevel) - } else { - utilLogger.SetLogLevel(level) - } - } else { - utilLogger.UtilLog.Warnln("Util (drsm, fsm, etc.) Log level not set. Default set to [info] level") - utilLogger.SetLogLevel(zap.InfoLevel) - } - } + setModuleLogLevel(cfgLogger, cfgLogger.SMF, logger.InitLog, logger.SetLogLevel) + setModuleLogLevel(cfgLogger, cfgLogger.NAS, nasLogger.NasLog, nasLogger.SetLogLevel) + setModuleLogLevel(cfgLogger, cfgLogger.NGAP, ngapLogger.NgapLog, ngapLogger.SetLogLevel) + setModuleLogLevel(cfgLogger, cfgLogger.OpenApi, openapiLogger.OpenapiLog, openapiLogger.SetLogLevel) + setModuleLogLevel(cfgLogger, cfgLogger.Util, utilLogger.UtilLog, utilLogger.SetLogLevel) // Initialize Statistics go metrics.InitMetrics() @@ -394,3 +325,29 @@ func (smf *SMF) Terminate(cancelServices context.CancelFunc, wg *sync.WaitGroup) func (smf *SMF) Exec(c *cli.Command) error { return nil } + +// setModuleLogLevel is a helper to reduce repetition in log level setup +func setModuleLogLevel(logger *utilLogger.Logger, moduleCfg *utilLogger.LogSetting, logObj *zap.SugaredLogger, setLevel func(zapcore.Level)) { + moduleName, err := utilLogger.GetLogSettingName(logger, moduleCfg) + if err != nil { + logObj.Errorf("could not determine module name: %v", err) + return + } + if moduleCfg == nil { + logObj.Warnf("%s Log level not set. Default set to [info] level", moduleName) + setLevel(zap.InfoLevel) + return + } + if moduleCfg.DebugLevel != "" { + level, err := zapcore.ParseLevel(moduleCfg.DebugLevel) + if err != nil { + logObj.Warnf("%s Log level [%s] is invalid, set to [info] level", moduleName, moduleCfg.DebugLevel) + setLevel(zap.InfoLevel) + } else { + setLevel(level) + } + } else { + logObj.Warnf("%s Log level not set. Default set to [info] level", moduleName) + setLevel(zap.InfoLevel) + } +} From 1716bc3059b1755138d043d7a11504dc166974d9 Mon Sep 17 00:00:00 2001 From: "Arrobo, Gabriel" Date: Fri, 21 Nov 2025 11:50:35 -0800 Subject: [PATCH 2/2] Address Copilot's comment Signed-off-by: Arrobo, Gabriel --- service/init.go | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/service/init.go b/service/init.go index 9b35b294..2f8cabe3 100644 --- a/service/init.go +++ b/service/init.go @@ -333,21 +333,14 @@ func setModuleLogLevel(logger *utilLogger.Logger, moduleCfg *utilLogger.LogSetti logObj.Errorf("could not determine module name: %v", err) return } - if moduleCfg == nil { - logObj.Warnf("%s Log level not set. Default set to [info] level", moduleName) + if moduleCfg == nil || moduleCfg.DebugLevel == "" { + logObj.Warnf("%s Log level not set. Default setting to [info] level", moduleName) setLevel(zap.InfoLevel) return } - if moduleCfg.DebugLevel != "" { - level, err := zapcore.ParseLevel(moduleCfg.DebugLevel) - if err != nil { - logObj.Warnf("%s Log level [%s] is invalid, set to [info] level", moduleName, moduleCfg.DebugLevel) - setLevel(zap.InfoLevel) - } else { - setLevel(level) - } - } else { - logObj.Warnf("%s Log level not set. Default set to [info] level", moduleName) - setLevel(zap.InfoLevel) + level, err := zapcore.ParseLevel(moduleCfg.DebugLevel) + if err != nil { + logObj.Warnf("%s Log level [%s] is invalid, setting to [%s] level", moduleName, moduleCfg.DebugLevel, level.String()) } + setLevel(level) }