From 6b7f7ab45b47a5274ee8d914a0bc8f38281ea558 Mon Sep 17 00:00:00 2001 From: Marin Ivanov Date: Mon, 5 Feb 2024 15:11:07 +0200 Subject: add logging and more error handling --- main.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index 501a5ad..f5a1152 100644 --- a/main.go +++ b/main.go @@ -9,24 +9,35 @@ import ( flag "github.com/spf13/pflag" ) +func logger(req *http.Request, err error) { + log.Printf("Err: %s, Request: %#v", err, req) +} + func main() { var ( bind string rootDir string + verbose bool ) flag.StringVarP(&bind, "bind", "b", "localhost:8080", "Address to listen to.") - flag.StringVarP(&rootDir, "root", "r", ".", "Address to listen to.") + flag.StringVarP(&rootDir, "root", "r", ".", "Root directory") + flag.BoolVarP(&verbose, "verbose", "v", false, "Verbose") flag.Parse() handler := &webdav.Handler{ FileSystem: webdav.Dir(rootDir), LockSystem: webdav.NewMemLS(), } + if verbose { + handler.Logger = logger + } root, err := filepath.Abs(rootDir) if err != nil { - log.Fatalf("Invalid path '%s': %s", rootDir, err) + log.Fatalf("Error: invalid root directory '%s': %s", rootDir, err) } log.Printf("Starting WebDAV server at '%s' on '%s'...", root, bind) - http.ListenAndServe(bind, handler) + if err = http.ListenAndServe(bind, handler); err != nil { + log.Fatalf("Error: server listen and serve failed: %s", err) + } } -- cgit v1.2.3