package main import ( "context" "os" "os/signal" "syscall" "go.signoz.io/query-service/app" "go.signoz.io/query-service/auth" "go.signoz.io/query-service/constants" "go.signoz.io/query-service/version" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) func initZapLog() *zap.Logger { config := zap.NewDevelopmentConfig() config.EncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder config.EncoderConfig.TimeKey = "timestamp" config.EncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder logger, _ := config.Build() return logger } func main() { loggerMgr := initZapLog() zap.ReplaceGlobals(loggerMgr) defer loggerMgr.Sync() // flushes buffer, if any logger := loggerMgr.Sugar() version.PrintVersion() serverOptions := &app.ServerOptions{ HTTPHostPort: constants.HTTPHostPort, PrivateHostPort: constants.PrivateHostPort, } // Read the jwt secret key auth.JwtSecret = os.Getenv("SIGNOZ_JWT_SECRET") if len(auth.JwtSecret) == 0 { zap.S().Warn("No JWT secret key is specified.") } else { zap.S().Info("No JWT secret key set successfully.") } server, err := app.NewServer(serverOptions) if err != nil { logger.Fatal("Failed to create server", zap.Error(err)) } if err := server.Start(); err != nil { logger.Fatal("Could not start servers", zap.Error(err)) } if err := auth.InitAuthCache(context.Background()); err != nil { logger.Fatal("Failed to initialize auth cache", zap.Error(err)) } signalsChannel := make(chan os.Signal, 1) signal.Notify(signalsChannel, os.Interrupt, syscall.SIGTERM) for { select { case status := <-server.HealthCheckStatus(): logger.Info("Received HealthCheck status: ", zap.Int("status", int(status))) case <-signalsChannel: logger.Fatal("Received OS Interrupt Signal ... ") } } }