feat: allow logging to stdout

The --log option accepts "-" as filename. This prevents rest-server from
opening the log file, it simply writes to the STDOUT stream provided by
the caller.

**BREAKING** in case use really used "-" to specify a file named "-"
you'll need to update your rest-server invocation to use "./-".
This commit is contained in:
Heiko Schlittermann (HS12-RIPE) 2023-03-23 19:19:18 +01:00
parent 94d5861c50
commit 9f074d8b3a
No known key found for this signature in database
GPG key ID: AF4CC676A6B6C142
3 changed files with 25 additions and 4 deletions

14
mux.go
View file

@ -2,6 +2,7 @@ package restserver
import (
"fmt"
"io"
"log"
"net/http"
"os"
@ -21,9 +22,16 @@ func (s *Server) debugHandler(next http.Handler) http.Handler {
}
func (s *Server) logHandler(next http.Handler) http.Handler {
accessLog, err := os.OpenFile(s.Log, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
if err != nil {
log.Fatalf("error: %v", err)
var accessLog io.Writer
if s.Log == "-" {
accessLog = os.Stdout
} else {
var err error
accessLog, err = os.OpenFile(s.Log, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
if err != nil {
log.Fatalf("error: %v", err)
}
}
return handlers.CombinedLoggingHandler(accessLog, next)