Skip to content

Commit f8d56d7

Browse files
committed
use custom Kemal::RequestLogHandler to filter search queries
1 parent e354cf2 commit f8d56d7

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

src/invidious.cr

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,9 @@ add_handler FilteredCompressHandler.new
250250
add_handler APIHandler.new
251251
add_handler AuthHandler.new
252252
add_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
253256
add_context_storage_type(Array(String))
254257
add_context_storage_type(Preferences)
255258
add_context_storage_type(Invidious::User)

src/invidious/helpers/logger.cr

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,32 @@ module Invidious::Logger
4444
end
4545
end
4646
end
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

0 commit comments

Comments
 (0)