created hws module
This commit is contained in:
44
hws/logger.go
Normal file
44
hws/logger.go
Normal file
@@ -0,0 +1,44 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user