diff --git a/main.go b/main.go index ccab2dceb..7a4201030 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,8 @@ package main import ( "context" + "flag" + "log" "net" "net/http" "os" @@ -12,6 +14,10 @@ import ( ) func main() { + var verbose bool + flag.BoolVar(&verbose, "v", false, "Print access log") + flag.Parse() + err := os.Remove("/run/weldr/api.socket") if err != nil && !os.IsNotExist(err) { panic(err) @@ -33,7 +39,12 @@ func main() { panic(err) } - api := weldr.New(repo, packages) + var logger *log.Logger + if verbose { + logger = log.New(os.Stdout, "", 0) + } + + api := weldr.New(repo, packages, logger) server := http.Server{Handler: api} shutdownDone := make(chan struct{}, 1) diff --git a/weldr/api.go b/weldr/api.go index cdeabdce9..139527d6b 100644 --- a/weldr/api.go +++ b/weldr/api.go @@ -18,14 +18,16 @@ type API struct { repo rpmmd.RepoConfig packages rpmmd.PackageList + logger *log.Logger router *httprouter.Router } -func New(repo rpmmd.RepoConfig, packages rpmmd.PackageList) *API { +func New(repo rpmmd.RepoConfig, packages rpmmd.PackageList, logger *log.Logger) *API { api := &API{ store: newStore(), repo: repo, packages: packages, + logger: logger, } // sample blueprint @@ -68,7 +70,10 @@ func New(repo rpmmd.RepoConfig, packages rpmmd.PackageList) *API { } func (api *API) ServeHTTP(writer http.ResponseWriter, request *http.Request) { - log.Println(request.URL.Path) + if api.logger != nil { + log.Println(request.Method, request.URL.Path) + } + writer.Header().Set("Content-Type", "application/json; charset=utf-8") api.router.ServeHTTP(writer, request) }