Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
req_logger.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
open Riot open Connection type level = Logger.level type args = { level : Logger.level; id : int Atomic.t } type state = args let args ~level () = { level; id = Atomic.make 0 } let init args = args let call conn args = let id = Atomic.fetch_and_add args.id 1 in Logger.info (fun f -> f "#%d %a %s" id Http.Method.pp conn.meth conn.path); let start_time = Ptime_clock.now () in conn |> register_before_send (fun conn -> let end_time = Ptime_clock.now () in let elapsed_time = Ptime.diff end_time start_time in Logger.info (fun f -> f "Sent %a in %a" Http.Status.pp conn.status Ptime.Span.pp elapsed_time)) |> register_after_send (fun conn -> let end_time = Ptime_clock.now () in let elapsed_time = Ptime.diff end_time start_time in Logger.info (fun f -> f "Delivered %d bytes in %a" (Bytestring.length conn.resp_body) Ptime.Span.pp elapsed_time)) |> register_after_send (fun conn -> let end_time = Ptime_clock.now () in let start_time = Atacama.Connection.accepted_at conn.conn in let elapsed_time = Ptime.diff end_time start_time in Logger.info (fun f -> f "Handled connection in %a" Ptime.Span.pp elapsed_time))