diff options
Diffstat (limited to 'nonsense-time.go')
| -rw-r--r-- | nonsense-time.go | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/nonsense-time.go b/nonsense-time.go index 6c625a1..f9901e6 100644 --- a/nonsense-time.go +++ b/nonsense-time.go @@ -4,16 +4,16 @@ import ( "context" "flag" "fmt" - "log" + "log/slog" "net/http" + "nonsense-time/api" "os" "time" - "nonsense-time/api" ) +var logger *slog.Logger -var logger *log.Logger - +// Middleware to timeout requests after a given duration func timeoutMiddleware(next http.Handler, duration time.Duration) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { ctx, cancel := context.WithTimeout(r.Context(), duration) @@ -28,7 +28,7 @@ func main() { port := flag.Int("p", 8080, "the port to listen on") bindAddr := flag.String("b", "", "the adress to bind to (leave empty for all interfaces)") waitTime := flag.Duration("w", 2*time.Second, "the maximum time for a request, unit defaults to ns") - debug := flag.Bool("v", false, "verbose output") + logLevel := flag.String("l", "info", "log level (debug, info, warn, error)") flag.Usage = func() { fmt.Fprintf(os.Stderr, "Usage: %s [options]\n", os.Args[0]) @@ -39,15 +39,24 @@ func main() { flag.Parse() mux := http.NewServeMux() + loggerOpts := new(slog.HandlerOptions) - addr := fmt.Sprintf("%s:%d", *bindAddr, *port) - loggerFlags := 0 - loggerPrefix := "" - if *debug { - loggerPrefix = "Nonsense Time: " - loggerFlags = log.Ldate | log.Ltime | log.Lshortfile + switch *logLevel { + case "debug": + loggerOpts.Level = slog.LevelDebug + loggerOpts.AddSource = true + case "info": + loggerOpts.Level = slog.LevelInfo + case "warn": + loggerOpts.Level = slog.LevelDebug + case "error": + loggerOpts.Level = slog.LevelError } - logger = log.New(os.Stdout, loggerPrefix, loggerFlags) + + addr := fmt.Sprintf("%s:%d", *bindAddr, *port) + logger = slog.New(slog.NewTextHandler(os.Stdout, loggerOpts)) + + api.Logger = logger vtt := timeoutMiddleware(http.HandlerFunc(api.VttOnline), *waitTime) site := timeoutMiddleware(http.HandlerFunc(api.SiteOnline), *waitTime) @@ -56,6 +65,6 @@ func main() { mux.HandleFunc("GET /vtt", api.VttRedirect) mux.Handle("GET /site/status", site) - logger.Println("Listening on ", addr) - logger.Fatal(http.ListenAndServe(addr, mux)) + logger.Info(fmt.Sprint("Listening on ", addr)) + logger.Info(http.ListenAndServe(addr, mux).Error()) } |
