package hws import ( "errors" "fmt" "net/url" "github.com/rs/zerolog" ) type logger struct { logger *zerolog.Logger ignoredPaths []string } // Server.AddLogger adds a logger to the server to use for request logging. func (server *Server) AddLogger(zlogger *zerolog.Logger) error { if zlogger == nil { return errors.New("Unable to add logger, no logger provided") } server.logger = &logger{ logger: zlogger, } return nil } // Server.LoggerIgnorePaths sets a list of URL paths to ignore logging for. // Path should match the url.URL.Path field, see https://pkg.go.dev/net/url#URL // Useful for ignoring requests to CSS files or favicons func (server *Server) LoggerIgnorePaths(paths ...string) error { for _, path := range paths { u, err := url.Parse(path) valid := err == nil && u.Scheme == "" && u.Host == "" && u.RawQuery == "" && u.Fragment == "" if !valid { return fmt.Errorf("Invalid path: '%s'", path) } } server.logger.ignoredPaths = paths return nil }