// This template contains a simple // app with OTEL bootstrap that will create an // HTTP server configured by environment that exports // spans and metrics to an OTEL collector if configured // to do so. Will also stand up a prometheus metrics // endpoint. // // Configuration and logger stored in context package main import ( "context" "os" "os/signal" "github.com/rs/zerolog" "golang.org/x/sys/unix" "gitea.libretechconsulting.com/rmcguire/go-http-server-with-otel/pkg/config" "gitea.libretechconsulting.com/rmcguire/go-http-server-with-otel/pkg/logging" ) func main() { ctx, cncl := signal.NotifyContext(context.Background(), os.Interrupt, unix.SIGTERM) defer cncl() // Set up app config and logging ctx, err := config.LoadConfig(ctx) if err != nil { panic(err) } cfg := config.MustFromCtx(ctx) ctx = logging.MustInitLogging(ctx) l := zerolog.Ctx(ctx) l.Trace().Any("config", *cfg).Send() l.Info(). Str("name", cfg.Name). Str("version", cfg.Version). Str("logLevel", cfg.Logging.Level). Msg("app initialized") <-ctx.Done() } func init() {}