diff options
author | vyzo <vyzo@hackzen.org> | 2024-03-04 02:15:49 +0200 |
---|---|---|
committer | vyzo <vyzo@hackzen.org> | 2024-03-04 02:15:49 +0200 |
commit | a03a288e502f934cfbc69e3628b91e207d996ef7 (patch) | |
tree | 88706c0eedd5c4f0090f33ccf42802bdafb29920 | |
parent | 1378454f87dc3f94011014e7b5feafb4ce3049c4 (diff) |
make ip4 address logging fastgerbil-httpd
so there is no reason to disable request logging any more for perf
reasons!
-rw-r--r-- | src/std/net/httpd/logger.ss | 46 | ||||
-rw-r--r-- | src/tools/gxhttpd-test/ensemble.config | 4 | ||||
-rw-r--r-- | src/tools/gxhttpd-test/server.config | 4 |
3 files changed, 44 insertions, 10 deletions
diff --git a/src/std/net/httpd/logger.ss b/src/std/net/httpd/logger.ss index 9d3b22f3..c72aa9f4 100644 --- a/src/std/net/httpd/logger.ss +++ b/src/std/net/httpd/logger.ss @@ -32,6 +32,40 @@ (using ((output :- Writer) (writer :- BufferedWriter)) + (def (write-ip4-address ip) + (let loop ((i 0) (wr 0)) + (let (next (u8vector-ref ip i)) + (cond + ((fx< next 10) + (writer.write-u8 (fx+ next 48)) + (if (fx< i 3) + (begin + (writer.write-char #\.) + (loop (fx+ i 1) (fx+ wr 2))) + (fx+ wr 1))) + ((fx< next 100) + (writer.write-u8 (fx+ (fxquotient next 10) 48)) + (writer.write-u8 (fx+ (fxremainder next 10) 48)) + (if (fx< i 3) + (begin + (writer.write-char #\.) + (loop (fx+ i 1) (fx+ wr 3))) + (fx+ wr 2))) + (else + (writer.write-u8 (fx+ (fxquotient next 100) 48)) + (let (next (fxremainder next 100)) + (writer.write-u8 (fx+ (fxquotient next 10) 48)) + (writer.write-u8 (fx+ (fxremainder next 10) 48)) + (if (fx< i 3) + (begin + (writer.write-char #\.) + (loop (fx+ i 1) (fx+ wr 4))) + (fx+ wr 3)))))))) + + (def (write-ip6-address ip) + ;; TODO optimize this + (writer.write-string (ip6-address->string ip))) + (def (log-request ts req) (using (req :- http-request) (let* ((wr 0) @@ -39,12 +73,12 @@ (wr (fx+ wr (writer.write-string (number->string ts)))) (wr (fx+ wr (writer.write-char #\space))) ;; client IP - (wr (fx+ wr (writer.write-string - (let (ip (car req.client)) - (case (u8vector-length ip) - ((4) (ip4-address->string ip)) - ((6) (ip6-address->string ip)) - (else "???")))))) + (wr (fx+ wr (let (ip (car req.client)) + (case (u8vector-length ip) + ((4) (write-ip4-address ip)) + ((6) (write-ip6-address ip)) + (else + (writer.write-string "???")))))) (wr (fx+ wr (writer.write-char #\space))) ;; request protocol (wr (fx+ wr (writer.write-string req.proto))) diff --git a/src/tools/gxhttpd-test/ensemble.config b/src/tools/gxhttpd-test/ensemble.config index 00e2cbf0..8aa85600 100644 --- a/src/tools/gxhttpd-test/ensemble.config +++ b/src/tools/gxhttpd-test/ensemble.config @@ -1,7 +1,7 @@ config: httpd-ensemble-v0 ensemble-servers: (httpd1 httpd2) -;; uncomment to enable request logging -;; ensemble-request-log: #t +;; comment to disable request logging (some +10% in reqs/s) + ensemble-request-log: #t server-configuration: (root: "content" handlers: (("/handler" . :test/site/handler)) diff --git a/src/tools/gxhttpd-test/server.config b/src/tools/gxhttpd-test/server.config index 133eb5d8..b6a2cd2a 100644 --- a/src/tools/gxhttpd-test/server.config +++ b/src/tools/gxhttpd-test/server.config @@ -3,6 +3,6 @@ root: "content" handlers: (("/handler" . :test/site/handler)) enable-servlets: #t server-log: "/tmp/server.log" -;; uncomment to enable request logging -;; request-log: "/tmp/request.log" +;; comment to disable request logging (some +10% in reqs/s) +request-log: "/tmp/request.log" listen: ("127.0.0.1:8080") |