package logging import ( "flag" "fmt" "log" "git.loafle.net/commons_go/config" "go.uber.org/zap" ) var ( configPath *string ) func init() { configPath = flag.String("log-config-path", "./logging.json", "The path of logger config file") flag.Parse() } var logger *zap.Logger func Logger() *zap.Logger { if nil == logger { initializeLogger() logger.Info(fmt.Sprintf("Logger has been initialized. config[%s]", *configPath)) } return logger } func initializeLogger() { var cfg zap.Config var err error conf := config.New() if err = conf.Load(&cfg, *configPath); nil != err { log.Printf("Loading of logger config has been failed [%v]", err) if logger, err = zap.NewDevelopment(); nil != err { log.Panicf("Building of logger config[Development] has been failed [%v]", err) } logger.Info("Logger has been initialized as development mode") return } if logger, err = cfg.Build(); nil != err { log.Panicf("Building of logger config[%s] has been failed [%v]", *configPath, err) } }