Commit 5a9754549ca44c0056bdd2bcae3dc16522fa8a97
1 parent
77fdf23d
Exists in
master
and in
2 other branches
Moved log subscriber to separate file [skip ci]
Showing
3 changed files
with
63 additions
and
58 deletions
Show diff stats
lib/searchkick.rb
... | ... | @@ -23,7 +23,10 @@ require "searchkick/version" |
23 | 23 | |
24 | 24 | # integrations |
25 | 25 | require "searchkick/railtie" if defined?(Rails) |
26 | -require "searchkick/logging" if defined?(ActiveSupport::Notifications) | |
26 | +if defined?(ActiveSupport::Notifications) | |
27 | + require "searchkick/logging" | |
28 | + require "searchkick/log_subscriber" | |
29 | +end | |
27 | 30 | |
28 | 31 | module Searchkick |
29 | 32 | # requires faraday | ... | ... |
... | ... | @@ -0,0 +1,59 @@ |
1 | +module Searchkick | |
2 | + # https://github.com/rails/rails/blob/master/activerecord/lib/active_record/log_subscriber.rb | |
3 | + class LogSubscriber < ActiveSupport::LogSubscriber | |
4 | + def self.runtime=(value) | |
5 | + Thread.current[:searchkick_runtime] = value | |
6 | + end | |
7 | + | |
8 | + def self.runtime | |
9 | + Thread.current[:searchkick_runtime] ||= 0 | |
10 | + end | |
11 | + | |
12 | + def self.reset_runtime | |
13 | + rt = runtime | |
14 | + self.runtime = 0 | |
15 | + rt | |
16 | + end | |
17 | + | |
18 | + def search(event) | |
19 | + self.class.runtime += event.duration | |
20 | + return unless logger.debug? | |
21 | + | |
22 | + payload = event.payload | |
23 | + name = "#{payload[:name]} (#{event.duration.round(1)}ms)" | |
24 | + | |
25 | + index = payload[:query][:index].is_a?(Array) ? payload[:query][:index].join(",") : payload[:query][:index] | |
26 | + type = payload[:query][:type] | |
27 | + request_params = payload[:query].except(:index, :type, :body) | |
28 | + | |
29 | + params = [] | |
30 | + request_params.each do |k, v| | |
31 | + params << "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}" | |
32 | + end | |
33 | + | |
34 | + debug " #{color(name, YELLOW, true)} #{index}#{type ? "/#{type.join(',')}" : ''}/_search#{params.any? ? '?' + params.join('&') : nil} #{payload[:query][:body].to_json}" | |
35 | + end | |
36 | + | |
37 | + def request(event) | |
38 | + self.class.runtime += event.duration | |
39 | + return unless logger.debug? | |
40 | + | |
41 | + payload = event.payload | |
42 | + name = "#{payload[:name]} (#{event.duration.round(1)}ms)" | |
43 | + | |
44 | + debug " #{color(name, YELLOW, true)} #{payload.except(:name).to_json}" | |
45 | + end | |
46 | + | |
47 | + def multi_search(event) | |
48 | + self.class.runtime += event.duration | |
49 | + return unless logger.debug? | |
50 | + | |
51 | + payload = event.payload | |
52 | + name = "#{payload[:name]} (#{event.duration.round(1)}ms)" | |
53 | + | |
54 | + debug " #{color(name, YELLOW, true)} _msearch #{payload[:body]}" | |
55 | + end | |
56 | + end | |
57 | +end | |
58 | + | |
59 | +Searchkick::LogSubscriber.attach_to :searchkick | ... | ... |
lib/searchkick/logging.rb
... | ... | @@ -140,62 +140,6 @@ module Searchkick |
140 | 140 | end |
141 | 141 | end |
142 | 142 | |
143 | - # https://github.com/rails/rails/blob/master/activerecord/lib/active_record/log_subscriber.rb | |
144 | - class LogSubscriber < ActiveSupport::LogSubscriber | |
145 | - def self.runtime=(value) | |
146 | - Thread.current[:searchkick_runtime] = value | |
147 | - end | |
148 | - | |
149 | - def self.runtime | |
150 | - Thread.current[:searchkick_runtime] ||= 0 | |
151 | - end | |
152 | - | |
153 | - def self.reset_runtime | |
154 | - rt = runtime | |
155 | - self.runtime = 0 | |
156 | - rt | |
157 | - end | |
158 | - | |
159 | - def search(event) | |
160 | - self.class.runtime += event.duration | |
161 | - return unless logger.debug? | |
162 | - | |
163 | - payload = event.payload | |
164 | - name = "#{payload[:name]} (#{event.duration.round(1)}ms)" | |
165 | - | |
166 | - index = payload[:query][:index].is_a?(Array) ? payload[:query][:index].join(",") : payload[:query][:index] | |
167 | - type = payload[:query][:type] | |
168 | - request_params = payload[:query].except(:index, :type, :body) | |
169 | - | |
170 | - params = [] | |
171 | - request_params.each do |k, v| | |
172 | - params << "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}" | |
173 | - end | |
174 | - | |
175 | - debug " #{color(name, YELLOW, true)} #{index}#{type ? "/#{type.join(',')}" : ''}/_search#{params.any? ? '?' + params.join('&') : nil} #{payload[:query][:body].to_json}" | |
176 | - end | |
177 | - | |
178 | - def request(event) | |
179 | - self.class.runtime += event.duration | |
180 | - return unless logger.debug? | |
181 | - | |
182 | - payload = event.payload | |
183 | - name = "#{payload[:name]} (#{event.duration.round(1)}ms)" | |
184 | - | |
185 | - debug " #{color(name, YELLOW, true)} #{payload.except(:name).to_json}" | |
186 | - end | |
187 | - | |
188 | - def multi_search(event) | |
189 | - self.class.runtime += event.duration | |
190 | - return unless logger.debug? | |
191 | - | |
192 | - payload = event.payload | |
193 | - name = "#{payload[:name]} (#{event.duration.round(1)}ms)" | |
194 | - | |
195 | - debug " #{color(name, YELLOW, true)} _msearch #{payload[:body]}" | |
196 | - end | |
197 | - end | |
198 | - | |
199 | 143 | # https://github.com/rails/rails/blob/master/activerecord/lib/active_record/railties/controller_runtime.rb |
200 | 144 | module ControllerRuntime |
201 | 145 | extend ActiveSupport::Concern |
... | ... | @@ -240,7 +184,6 @@ Searchkick::Query.prepend(Searchkick::QueryWithInstrumentation) |
240 | 184 | Searchkick::Index.prepend(Searchkick::IndexWithInstrumentation) |
241 | 185 | Searchkick::Indexer.prepend(Searchkick::IndexerWithInstrumentation) |
242 | 186 | Searchkick.singleton_class.prepend(Searchkick::SearchkickWithInstrumentation) |
243 | -Searchkick::LogSubscriber.attach_to :searchkick | |
244 | 187 | ActiveSupport.on_load(:action_controller) do |
245 | 188 | include Searchkick::ControllerRuntime |
246 | 189 | end | ... | ... |