From 7c4e32a34b2782a2d4789a44b476ca63ebf97231 Mon Sep 17 00:00:00 2001 From: pancho horrillo Date: Fri, 18 Dec 2020 11:48:25 +0100 Subject: [PATCH] feat: add /server/log/{prefix} endpoint MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit /{prefix} is optional Sample usage: kapow set /server/log/myapp "$msg" Co-authored-by: Roberto Abdelkader Martínez Pérez --- internal/server/data/resource.go | 15 +++++++++++++++ internal/server/data/server.go | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/internal/server/data/resource.go b/internal/server/data/resource.go index 3c1ac90..3c9c098 100644 --- a/internal/server/data/resource.go +++ b/internal/server/data/resource.go @@ -23,6 +23,7 @@ import ( "net/textproto" "strconv" + "github.com/BBVA/kapow/internal/logger" "github.com/BBVA/kapow/internal/server/httperror" "github.com/BBVA/kapow/internal/server/model" "github.com/gorilla/mux" @@ -231,3 +232,17 @@ func setResponseBody(w http.ResponseWriter, r *http.Request, h *model.Handler) { } h.SentBytes += n } + +func setServerLog(w http.ResponseWriter, r *http.Request, h *model.Handler) { + msg, err := ioutil.ReadAll(r.Body) + if err != nil { + httperror.ErrorJSON(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) + return + } + handlerId := mux.Vars(r)["handlerID"] + if prefix := mux.Vars(r)["prefix"]; prefix == "" { + logger.L.Printf("%s %s\n", handlerId, msg) + } else { + logger.L.Printf("%s %s: %s\n", handlerId, prefix, msg) + } +} diff --git a/internal/server/data/server.go b/internal/server/data/server.go index 1721bf8..28c382a 100644 --- a/internal/server/data/server.go +++ b/internal/server/data/server.go @@ -83,6 +83,10 @@ func Run(bindAddr string, wg *sync.WaitGroup) { {"/handlers/{handlerID}/response/cookies/{name}", "PUT", lockResponseWriter(setResponseCookies)}, {"/handlers/{handlerID}/response/body", "PUT", lockResponseWriter(setResponseBody)}, {"/handlers/{handlerID}/response/stream", "PUT", lockResponseWriter(setResponseBody)}, + + // logging + {"/handlers/{handlerID}/server/log/{prefix}", "PUT", setServerLog}, + {"/handlers/{handlerID}/server/log", "PUT", setServerLog}, } listener, err := net.Listen("tcp", bindAddr)