package main import ( "context" "os/signal" "syscall" "github.com/nspcc-dev/neofs-sdk-go/logger" "github.com/spf13/viper" "go.uber.org/zap" ) func main() { var ( v = settings() l = newLogger(v) ) globalContext, _ := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP) app := newApp(globalContext, WithLogger(l), WithConfig(v)) go app.Serve(globalContext) app.Wait() } func newLogger(v *viper.Viper) *zap.Logger { options := []logger.Option{ logger.WithLevel(v.GetString(cfgLoggerLevel)), logger.WithTraceLevel(v.GetString(cfgLoggerTraceLevel)), logger.WithFormat(v.GetString(cfgLoggerFormat)), logger.WithSamplingInitial(v.GetInt(cfgLoggerSamplingInitial)), logger.WithSamplingThereafter(v.GetInt(cfgLoggerSamplingThereafter)), logger.WithAppName(v.GetString(cfgApplicationName)), logger.WithAppVersion(v.GetString(cfgApplicationVersion)), } if v.GetBool(cfgLoggerNoCaller) { options = append(options, logger.WithoutCaller()) } if v.GetBool(cfgLoggerNoDisclaimer) { options = append(options, logger.WithoutDisclaimer()) } l, err := logger.New(options...) if err != nil { panic(err) } return l }