chore: add go config and logging layer

This commit is contained in:
Philipp
2026-06-10 14:56:03 +02:00
parent e4bfc62c18
commit 2112821f79
12 changed files with 265 additions and 30 deletions
+13 -12
View File
@@ -3,17 +3,25 @@ package main
import (
"context"
"errors"
"log/slog"
"net/http"
"os"
"os/signal"
"syscall"
"time"
"forgejo.digital-droplets.de/philschlo/proxui/platform/config"
"forgejo.digital-droplets.de/philschlo/proxui/platform/logging"
)
func main() {
addr := getenv("BACKEND_ADDR", ":8080")
logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))
cfg, err := config.Load()
if err != nil {
logger := logging.New("backend", "unknown", 0)
logger.Error("failed to load config", "error", err)
os.Exit(1)
}
logger := logging.New("backend", cfg.AppEnv, cfg.LogLevel)
mux := http.NewServeMux()
mux.HandleFunc("GET /healthz", func(w http.ResponseWriter, r *http.Request) {
@@ -22,7 +30,7 @@ func main() {
})
server := &http.Server{
Addr: addr,
Addr: cfg.BackendAddr,
Handler: mux,
ReadHeaderTimeout: 5 * time.Second,
}
@@ -31,7 +39,7 @@ func main() {
defer stop()
go func() {
logger.Info("backend listening", "addr", addr)
logger.Info("backend listening", "addr", cfg.BackendAddr)
if err := server.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
logger.Error("backend failed", "error", err)
os.Exit(1)
@@ -47,10 +55,3 @@ func main() {
os.Exit(1)
}
}
func getenv(key, fallback string) string {
if value := os.Getenv(key); value != "" {
return value
}
return fallback
}