Switch to a proper logging library

Structured logs can be enabled with `-log.json`.
This commit is contained in:
Conrad Hoffmann 2022-12-01 12:00:42 +01:00
parent 03fce79e57
commit 40bae8dc31
9 changed files with 75 additions and 64 deletions

View file

@ -5,7 +5,6 @@ import (
"encoding/base64"
"flag"
"fmt"
"log"
"net/http"
"os"
@ -14,9 +13,10 @@ import (
"github.com/emersion/go-webdav/carddav"
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"git.sr.ht/~sircmpwn/tokidoki/auth"
"git.sr.ht/~sircmpwn/tokidoki/debug"
"git.sr.ht/~sircmpwn/tokidoki/storage"
)
@ -85,12 +85,15 @@ func main() {
var (
addr string
authURL string
debug bool
jsonLog bool
storageURL string
)
flag.StringVar(&addr, "addr", ":8080", "listening address")
flag.StringVar(&authURL, "auth.url", "", "auth backend URL (required)")
flag.StringVar(&storageURL, "storage.url", "", "storage backend URL (required)")
flag.BoolVar(&debug.Enable, "debug", false, "enable debug output")
flag.BoolVar(&debug, "log.debug", false, "enable debug logs")
flag.BoolVar(&jsonLog, "log.json", false, "enable structured logs")
flag.Parse()
if len(flag.Args()) != 0 || authURL == "" || storageURL == "" {
@ -98,6 +101,15 @@ func main() {
os.Exit(1)
}
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
zerolog.SetGlobalLevel(zerolog.InfoLevel)
if debug {
zerolog.SetGlobalLevel(zerolog.DebugLevel)
}
if !jsonLog {
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
}
for _, method := range []string{
"PROPFIND",
"PROPPATCH",
@ -113,7 +125,7 @@ func main() {
authProvider, err := auth.NewFromURL(authURL)
if err != nil {
log.Fatalf("failed to load auth provider: %s", err.Error())
log.Fatal().Err(err).Msg("failed to load auth provider")
}
mux.Use(authProvider.Middleware())
@ -121,7 +133,7 @@ func main() {
caldavBackend, carddavBackend, err := storage.NewFromURL(storageURL, "/calendar/", "/contacts/", upBackend)
if err != nil {
log.Fatalf("failed to load storage backend: %s", err.Error())
log.Fatal().Err(err).Msg("failed to load storage backend")
}
carddavHandler := carddav.Handler{Backend: carddavBackend}
@ -144,11 +156,11 @@ func main() {
Handler: mux,
}
log.Printf("Server running on %s", addr)
debug.Printf("Debug output enabled")
log.Info().Str("address", addr).Msg("starting server")
log.Debug().Msg("debug output enabled")
err = server.ListenAndServe()
if err != http.ErrServerClosed {
log.Fatalf("ListenAndServe: %s", err.Error())
log.Fatal().Err(err).Msg("ListenAndServe() error")
}
}