comparison mod_http_logging/mod_http_logging.lua @ 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 557c976735e1
children 135ca695fcbf
comparison
equal deleted inserted replaced
2965:557c976735e1 2966:678be8ea4d38
12 12
13 module:set_global(); 13 module:set_global();
14 14
15 local server = require "net.http.server"; 15 local server = require "net.http.server";
16 16
17 local function get_content_len(response, body)
18 local len = response.headers.content_length;
19 if len then return len; end
20 if not body then body = request.body; end
21 if body then return #tostring(body); end
22 end
23
17 local function log_response(response, body) 24 local function log_response(response, body)
18 body = body or response.body; 25 local len = tostring(get_content_len(response, body) or "-");
19 local len = response.headers.content_length or (body and #body) or "-";
20 local request = response.request; 26 local request = response.request;
21 local ip = request.conn:ip(); 27 local ip = request.conn:ip();
22 local req = string.format("%s %s HTTP/%s", request.method, request.path, request.httpversion); 28 local req = string.format("%s %s HTTP/%s", request.method, request.path, request.httpversion);
23 local date = os.date("%d/%m/%Y:%H:%M:%S %z"); 29 local date = os.date("%d/%m/%Y:%H:%M:%S %z");
24 module:log("info", "%s - - [%s] \"%s\" %d %s", ip, date, req, response.status_code, tostring(len)); 30 module:log("info", "%s - - [%s] \"%s\" %d %s", ip, date, req, response.status_code, len);
25 end 31 end
26 32
27 local send_response = server.send_response; 33 local send_response = server.send_response;
28 local function log_and_send_response(response, body) 34 local function log_and_send_response(response, body)
29 if not response.finished then 35 if not response.finished then