comparison net/http/server.lua @ 13101:c975dafa4303

net.http.server: Assign each request its own log source
author Kim Alvefur <zash@zash.se>
date Sun, 14 May 2023 18:44:11 +0200
parents 18ffe7833446
children 4e112b87543d
comparison
equal deleted inserted replaced
13100:18ffe7833446 13101:c975dafa4303
1 1
2 local t_insert, t_concat = table.insert, table.concat; 2 local t_insert, t_concat = table.insert, table.concat;
3 local parser_new = require "prosody.net.http.parser".new; 3 local parser_new = require "prosody.net.http.parser".new;
4 local events = require "prosody.util.events".new(); 4 local events = require "prosody.util.events".new();
5 local addserver = require "prosody.net.server".addserver; 5 local addserver = require "prosody.net.server".addserver;
6 local log = require "prosody.util.logger".init("http.server"); 6 local logger = require "prosody.util.logger";
7 local log = logger.init("http.server");
7 local os_date = os.date; 8 local os_date = os.date;
8 local pairs = pairs; 9 local pairs = pairs;
9 local s_upper = string.upper; 10 local s_upper = string.upper;
10 local setmetatable = setmetatable; 11 local setmetatable = setmetatable;
11 local cache = require "prosody.util.cache"; 12 local cache = require "prosody.util.cache";
128 handle_request(conn, request, done); wait(); 129 handle_request(conn, request, done); wait();
129 end, runner_callbacks, session); 130 end, runner_callbacks, session);
130 local function success_cb(request) 131 local function success_cb(request)
131 --log("debug", "success_cb: %s", request.path); 132 --log("debug", "success_cb: %s", request.path);
132 request.id = id.short(); 133 request.id = id.short();
134 request.log = logger.init("http." .. request.method .. "-" .. request.id);
133 request.ip = ip; 135 request.ip = ip;
134 request.secure = secure; 136 request.secure = secure;
135 session.thread:run(request); 137 session.thread:run(request);
136 end 138 end
137 local function error_cb(err) 139 local function error_cb(err)
250 252
251 local is_head_request = request.method == "HEAD"; 253 local is_head_request = request.method == "HEAD";
252 254
253 local response = { 255 local response = {
254 id = request.id; 256 id = request.id;
257 log = request.log;
255 request = request; 258 request = request;
256 is_head_request = is_head_request; 259 is_head_request = is_head_request;
257 status_code = 200; 260 status_code = 200;
258 headers = { date = date_header, connection = response_conn_header }; 261 headers = { date = date_header, connection = response_conn_header };
259 persistent = persistent; 262 persistent = persistent;
282 end 285 end
283 286
284 local global_event = request.method.." "..request.path:match("[^?]*"); 287 local global_event = request.method.." "..request.path:match("[^?]*");
285 288
286 local payload = { request = request, response = response }; 289 local payload = { request = request, response = response };
287 log("debug", "Firing event: %s", global_event); 290 request.log("debug", "Firing event: %s", global_event);
288 local result = events.fire_event(global_event, payload); 291 local result = events.fire_event(global_event, payload);
289 if result == nil and is_head_request then 292 if result == nil and is_head_request then
290 local global_head_event = "GET "..request.path:match("[^?]*"); 293 local global_head_event = "GET "..request.path:match("[^?]*");
291 log("debug", "Firing event: %s", global_head_event); 294 request.log("debug", "Firing event: %s", global_head_event);
292 result = events.fire_event(global_head_event, payload); 295 result = events.fire_event(global_head_event, payload);
293 end 296 end
294 if result == nil then 297 if result == nil then
295 if not hosts[host] then 298 if not hosts[host] then
296 if hosts[default_host] then 299 if hosts[default_host] then
307 response:send(events.fire_event("http-error", { code = err_code, message = err, response = response })); 310 response:send(events.fire_event("http-error", { code = err_code, message = err, response = response }));
308 return; 311 return;
309 end 312 end
310 313
311 local host_event = request.method.." "..host..request.path:match("[^?]*"); 314 local host_event = request.method.." "..host..request.path:match("[^?]*");
312 log("debug", "Firing event: %s", host_event); 315 request.log("debug", "Firing event: %s", host_event);
313 result = events.fire_event(host_event, payload); 316 result = events.fire_event(host_event, payload);
314 317
315 if result == nil and is_head_request then 318 if result == nil and is_head_request then
316 local host_head_event = "GET "..host..request.path:match("[^?]*"); 319 local host_head_event = "GET "..host..request.path:match("[^?]*");
317 log("debug", "Firing event: %s", host_head_event); 320 request.log("debug", "Firing event: %s", host_head_event);
318 result = events.fire_event(host_head_event, payload); 321 result = events.fire_event(host_head_event, payload);
319 end 322 end
320 end 323 end
321 324
322 return handle_result(request, response, result); 325 return handle_result(request, response, result);