add request logging

This commit is contained in:
1e99 2025-04-12 11:13:55 +02:00
parent c31ed4ed27
commit 4e73711018
3 changed files with 22 additions and 1 deletions

View file

@ -8,6 +8,7 @@ Configuration is done using environment variables.
- `WOLBODGE_DEVICE_TYPE`: Device type to pick, defaults to `test`. - `WOLBODGE_DEVICE_TYPE`: Device type to pick, defaults to `test`.
- `test`: A dummy device, used for testing. - `test`: A dummy device, used for testing.
- `command`: Runs a subprocess to aquire the info. See the example below for more info. - `command`: Runs a subprocess to aquire the info. See the example below for more info.
- `WOLBODGE_LOG_REQUESTS`: Should HTTP requests be logged, defaults to `true`.
### Example: Raspberry pi using the command device ### Example: Raspberry pi using the command device
- `WOLBODGE_DEVICE_TYPE=command` - `WOLBODGE_DEVICE_TYPE=command`

View file

@ -20,7 +20,9 @@ func Run() error {
logger := log.New(os.Stdout, "", log.LstdFlags) logger := log.New(os.Stdout, "", log.LstdFlags)
var address string var address string
var logRequests bool
Env("WOLBODGE_ADDRESS", &address, ":3000", logger) Env("WOLBODGE_ADDRESS", &address, ":3000", logger)
Env("WOLBODGE_LOG_REQUESTS", &logRequests, "true", logger)
tmpl := template.New("") tmpl := template.New("")
_, err := tmpl.Parse(embed) _, err := tmpl.Parse(embed)
@ -53,8 +55,13 @@ func Run() error {
exit := make(chan bool) exit := make(chan bool)
go devices.KeepDeviceInSync(logger, device, storage.HasSessions, exit) go devices.KeepDeviceInSync(logger, device, storage.HasSessions, exit)
var handler http.Handler = mux
if logRequests {
handler = routes.Logger(mux, logger)
}
logger.Printf("Listening on %s", address) logger.Printf("Listening on %s", address)
err = http.ListenAndServe(address, mux) err = http.ListenAndServe(address, handler)
if err != nil { if err != nil {
return fmt.Errorf("failed to listen: %w", err) return fmt.Errorf("failed to listen: %w", err)
} }

13
routes/logger.go Normal file
View file

@ -0,0 +1,13 @@
package routes
import (
"log"
"net/http"
)
func Logger(handler http.Handler, logger *log.Logger) http.HandlerFunc {
return func(res http.ResponseWriter, req *http.Request) {
logger.Printf("%-30s %-10s %s", req.RemoteAddr, req.Method, req.URL.Path)
handler.ServeHTTP(res, req)
}
}