diff --git a/go.mod b/go.mod index f65f4c4..2f5b221 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module vector -go 1.23 +go 1.23.0 require ( github.com/sugarme/tokenizer v0.3.0 diff --git a/main.go b/main.go index e57c0d7..7b18803 100644 --- a/main.go +++ b/main.go @@ -6,6 +6,7 @@ import ( "log" "net/http" "os" + "time" "github.com/sugarme/tokenizer" "github.com/sugarme/tokenizer/pretrained" @@ -193,6 +194,25 @@ func vectorHandler(w http.ResponseWriter, r *http.Request) { }) } +type statusRecorder struct { + http.ResponseWriter + status int +} + +func (r *statusRecorder) WriteHeader(code int) { + r.status = code + r.ResponseWriter.WriteHeader(code) +} + +func loggingMiddleware(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + start := time.Now() + rec := &statusRecorder{ResponseWriter: w, status: http.StatusOK} + next.ServeHTTP(rec, r) + log.Printf("%s %s %s %d %s", r.RemoteAddr, r.Method, r.URL.Path, rec.status, time.Since(start)) + }) +} + func healthHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(map[string]string{"status": "ok"}) @@ -206,6 +226,7 @@ func main() { http.HandleFunc("/vector", vectorHandler) http.HandleFunc("/ok", healthHandler) + log.SetOutput(os.Stdout) log.Printf("Starting server on port %s...\n", port) - log.Fatal(http.ListenAndServe(":"+port, nil)) + log.Fatal(http.ListenAndServe(":"+port, loggingMiddleware(http.DefaultServeMux))) } diff --git a/server.py b/server.py index 9f8e896..90aa707 100644 --- a/server.py +++ b/server.py @@ -95,6 +95,7 @@ class VectorHandler(BaseHTTPRequestHandler): except Exception as e: self.send_error(500, str(e)) def log_message(self, format, *args): - pass # Suppress logs + sys.stdout.write("%s - - [%s] %s\n" % (self.address_string(), self.log_date_time_string(), format % args)) + sys.stdout.flush() HTTPServer(("0.0.0.0", int(os.getenv("PORT", 8080))), VectorHandler).serve_forever()