From fdeb0676366ae482a877058d274c8a4c3da3987f Mon Sep 17 00:00:00 2001 From: Fijxu Date: Sun, 31 Aug 2025 17:04:46 -0400 Subject: [PATCH] use custom Kemal::RequestLogHandler to filter search queries --- src/invidious.cr | 3 +++ src/invidious/helpers/logger.cr | 29 +++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/invidious.cr b/src/invidious.cr index 69bdbd9c8..ed5c4ee0b 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -256,6 +256,9 @@ add_handler FilteredCompressHandler.new add_handler APIHandler.new add_handler AuthHandler.new add_handler DenyFrame.new +# Turn off default Kemal logging since we are using our own one based on Kemal::RequestLogHandler +Kemal.config.logging = false +add_handler Invidious::RequestLogHandler.new add_context_storage_type(Array(String)) add_context_storage_type(Preferences) add_context_storage_type(Invidious::User) diff --git a/src/invidious/helpers/logger.cr b/src/invidious/helpers/logger.cr index a8043d511..b3f9889f8 100644 --- a/src/invidious/helpers/logger.cr +++ b/src/invidious/helpers/logger.cr @@ -44,3 +44,32 @@ module Invidious::Logger end end end + +class Invidious::RequestLogHandler < Kemal::RequestLogHandler + Log = ::Log.for(Kemal) + + def call(context : HTTP::Server::Context) + elapsed_time = Time.measure { call_next(context) } + elapsed_text = elapsed_text(elapsed_time) + requested_url = context.request.resource + + # Try not to log search queries passed as GET parameters during normal use + # (They will still be logged if log level is 'Debug' or 'Trace') + if CONFIG.log_level > ::Log::Severity::Debug && ( + requested_url.downcase.includes?("search") || requested_url.downcase.includes?("q=") + ) + # Log only the path + requested_url = context.request.path + end + + Log.info { "#{context.response.status_code} #{context.request.method} #{requested_url} #{elapsed_text}" } + context + end + + private def elapsed_text(elapsed) + millis = elapsed.total_milliseconds + return "#{millis.round(2)}ms" if millis >= 1 + + "#{(millis * 1000).round(2)}µs" + end +end