accessloger for golang http handler
- Go 1.18 or higher. support the 3 latest versions of Go.
sample go code
package main
import (
"encoding/json"
"log"
"net/http"
"os"
"github.com/mashiike/accesslogger"
)
func main() {
err := http.ListenAndServe("localhost:8080",
accesslogger.Wrap(
http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
e := json.NewEncoder(w)
e.SetEscapeHTML(true)
e.SetIndent("", " ")
e.Encode(map[string]string{"status":"ok"})
}),
accesslogger.CombinedLogger(os.Stderr),
//accesslogger.CombinedDLogger(os.Stderr),
//accesslogger.JSONLogger(os.Stderr),
),
)
if err != nil {
log.Fatalln(err)
}
}
output log:
192.0.2.1:1234 - - [26/Dec/2022:15:04:05 +0900] "GET / HTTP/1.1" - 4 "-" "go test client"
192.0.2.1:1234 - hoge [26/Dec/2022:15:04:06 +0900] "GET /hoge HTTP/1.1" - 4 "https://example.com" "go test client"
222.222.333.333 - hoge [26/Dec/2022:15:04:06 +0900] "GET /hoge HTTP/1.1" - 4 "https://example.com" "go test client"