base_server

module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 6, 2022 License: MIT

README

base_server

Шаблон приложения с логером, метрикой и трассировкой

func main() {
	// Основной контекст
	setupContext()
	ctx := app.Context()
	
	// Конфигурация приложения
	logger.SetLevel(zap.InfoLevel)
	err := config.InitGlobalConfig(
		config.WithAcceptEnvironment{EnvPrefix: "ROUTE"},
		config.WithSourceFile{FileName: app.ConfigFile},
		config.WithDefValue{Key: app.LoggerLevel, Val: "INFO"},
		config.WithDefValue{Key: app.MetricsEnable, Val: false},
		config.WithDefValue{Key: app.TraceEnable, Val: false},
		config.WithDefValue{Key: app.ServerGracefulShutdown, Val: "10s"},
		config.WithDefValue{Key: app.ServerEndpoint, Val: "tcp://127.0.0.1:9002"},
	)
	if err != nil {
		logger.Fatal(ctx, err)
	}

	if err = setupLogger(); err != nil {
		logger.Fatalf(ctx, "setup logger: %v", err)
	}
	
	if err = setupMetrics(); err != nil {
		logger.Fatalf(ctx, "setup metrics: %v", err)
	}
	
	if err = setupTracer(); err != nil {
		logger.Fatalf(ctx, "setup tracer: %v", err)
	}
	
	var srv *server.APIServer
	if srv, err = setupServer(ctx); err != nil {
		logger.Fatalf(ctx, "setup server: %v", err)
	}
	
	var endPointAddress string
	if endPointAddress, err = app.ServerEndpoint.Maybe(ctx); err != nil {
		logger.Fatalf(ctx, "get server endpoint from config: %v", err)
	}

	var ep *pkgNet.Endpoint
	if ep, err = pkgNet.ParseEndpoint(endPointAddress); err != nil {
		logger.Fatalf(ctx, "parse server endpoint (%s): %v", endPointAddress, err)
	}

	gracefulDuration, _ := app.ServerGracefulShutdown.Maybe(ctx)
	if err = srv.Run(ctx, ep, server.RunWithGracefulStop(gracefulDuration)); err != nil {
		logger.Fatalf(ctx, "run server: %v", err)
	}

	WhenHaveTracerProvider(func(tp ot.TracerProvider) {
		_ = tp.Shutdown(context.Background())
	})
}

Directories

Path Synopsis
cmd
internal
app
pkg
route
Package route is a reverse proxy.
Package route is a reverse proxy.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL