File tree Expand file tree Collapse file tree 2 files changed +32
-0
lines changed Expand file tree Collapse file tree 2 files changed +32
-0
lines changed Original file line number Diff line number Diff line change @@ -250,6 +250,9 @@ add_handler FilteredCompressHandler.new
250250add_handler APIHandler .new
251251add_handler AuthHandler .new
252252add_handler DenyFrame .new
253+ # Turn off default Kemal logging since we are using our own one based on Kemal::RequestLogHandler
254+ Kemal .config.logging = false
255+ add_handler Invidious ::RequestLogHandler .new
253256add_context_storage_type(Array (String ))
254257add_context_storage_type(Preferences )
255258add_context_storage_type(Invidious ::User )
Original file line number Diff line number Diff line change @@ -44,3 +44,32 @@ module Invidious::Logger
4444 end
4545 end
4646end
47+
48+ class Invidious::RequestLogHandler < Kemal::RequestLogHandler
49+ Log = ::Log .for(Kemal )
50+
51+ def call (context : HTTP ::Server ::Context )
52+ elapsed_time = Time .measure { call_next(context) }
53+ elapsed_text = elapsed_text(elapsed_time)
54+ requested_url = context.request.resource
55+
56+ # Try not to log search queries passed as GET parameters during normal use
57+ # (They will still be logged if log level is 'Debug' or 'Trace')
58+ if CONFIG .log_level > ::Log ::Severity ::Debug && (
59+ requested_url.downcase.includes?(" search" ) || requested_url.downcase.includes?(" q=" )
60+ )
61+ # Log only the path
62+ requested_url = context.request.path
63+ end
64+
65+ Log .info { " #{ context.response.status_code } #{ context.request.method } #{ requested_url } #{ elapsed_text } " }
66+ context
67+ end
68+
69+ private def elapsed_text (elapsed )
70+ millis = elapsed.total_milliseconds
71+ return " #{ millis.round(2 ) } ms" if millis >= 1
72+
73+ " #{ (millis * 1000 ).round(2 ) } µs"
74+ end
75+ end
You can’t perform that action at this time.
0 commit comments