Changeset

2966:678be8ea4d38

mod_http_logging: Factor out body length calculation
author Kim Alvefur <zash@zash.se>
date Fri, 30 Mar 2018 13:35:43 +0200
parents 2965:557c976735e1
children 2967:135ca695fcbf
files mod_http_logging/mod_http_logging.lua
diffstat 1 files changed, 9 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mod_http_logging/mod_http_logging.lua	Fri Mar 30 13:34:15 2018 +0200
+++ b/mod_http_logging/mod_http_logging.lua	Fri Mar 30 13:35:43 2018 +0200
@@ -14,14 +14,20 @@
 
 local server = require "net.http.server";
 
+local function get_content_len(response, body)
+	local len = response.headers.content_length;
+	if len then return len; end
+	if not body then body = request.body; end
+	if body then return #tostring(body); end
+end
+
 local function log_response(response, body)
-	body = body or response.body;
-	local len = response.headers.content_length or (body and #body) or "-";
+	local len = tostring(get_content_len(response, body) or "-");
 	local request = response.request;
 	local ip = request.conn:ip();
 	local req = string.format("%s %s HTTP/%s", request.method, request.path, request.httpversion);
 	local date = os.date("%d/%m/%Y:%H:%M:%S %z");
-	module:log("info", "%s - - [%s] \"%s\" %d %s", ip, date, req, response.status_code, tostring(len));
+	module:log("info", "%s - - [%s] \"%s\" %d %s", ip, date, req, response.status_code, len);
 end
 
 local send_response = server.send_response;