Files
trading_assistant/trading_assistant_api/services/country/main.go
2026-02-10 10:57:11 +08:00

65 lines
1.5 KiB
Go

package main
import (
"context"
"fmt"
"net/http"
"os"
"os/signal"
"syscall"
"time"
"common/logger"
"common/utils"
)
func main() {
port := utils.GetEnv("PORT", "8081")
if err := logger.SetupTimezone("Asia/Shanghai"); err != nil {
logger.L().Printf("setup timezone error: %v", err)
}
if err := logger.SetupFile(utils.GetEnv("LOG_FILE", "/var/log/app/country.log")); err != nil {
logger.L().Printf("setup file logger error: %v", err)
}
srv := &http.Server{
Addr: ":" + port,
Handler: routes(),
}
logger.L().Printf("country service starting on :%s", port)
go func() {
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
logger.L().Fatalf("listen: %v", err)
}
}()
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
logger.L().Printf("country service shutting down...")
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := srv.Shutdown(ctx); err != nil {
logger.L().Printf("server shutdown: %v", err)
}
logger.L().Printf("country service exited")
}
func routes() http.Handler {
mux := http.NewServeMux()
mux.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte("ok"))
})
mux.HandleFunc("/version", func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte("country-service v0.1.0"))
})
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "hello from country-service")
})
return mux
}