Logi jeszcze bardziej czytelne
Zupełnie niedawno rozpisywałem się nad tym jak dodać trochę luksusu do współpracy z logami z railsów, a tu proszę znalazłem plugin który jeszcze bardziej poprawia czytelność logów.
Plugin nazywa się Query Trace. Rozszerza on informacje o zapytaniach SQL jakie trafiają do logów. Ta dodatkowa informacja to call trace prowadzący do miejsca z którego kwerenda została wykonana. Cytując autora, w logach zamiast:
-
Schedule Load (0.023687) SELECT * FROM schedules WHERE (schedules.id = 3) LIMIT 1
-
Resource Load (0.001076) SELECT * FROM resources WHERE (resources.id = 328) LIMIT 1
znajdziemy:
-
Schedule Load (0.023687) SELECT * FROM schedules WHERE (schedules.id = 3) LIMIT 1
-
app/models/available_work.rb:50:in `study_method'
-
app/helpers/plan_helper.rb:4:in `work_description'
-
app/views/plan/_resource_schedule.rhtml:27:in `_run_rhtml_plan__resource_schedule'
-
app/views/plan/_resource_schedule.rhtml:24:in `_run_rhtml_plan__resource_schedule'
-
app/views/plan/_schedule_listing.rhtml:5:in `_run_rhtml_plan__schedule_listing'
-
app/views/plan/_schedule_listing.rhtml:3:in `_run_rhtml_plan__schedule_listing'
-
app/views/plan/_schedule_listing.rhtml:1:in `_run_rhtml_plan__schedule_listing'
-
app/views/plan/index.rhtml:6:in `_run_rhtml_plan_index'
-
vendor/plugins/textmate_footnotes/lib/textmate_footnotes.rb:60:in `render'
-
Resource Load (0.001076) SELECT * FROM resources WHERE (resources.id = 328) LIMIT 1
-
app/models/available_work.rb:54:in `div_type'
-
app/helpers/plan_helper.rb:6:in `work_description'
-
app/views/plan/_resource_schedule.rhtml:27:in `_run_rhtml_plan__resource_schedule'
-
app/views/plan/_resource_schedule.rhtml:24:in `_run_rhtml_plan__resource_schedule'
-
app/views/plan/_schedule_listing.rhtml:5:in `_run_rhtml_plan__schedule_listing'
-
app/views/plan/_schedule_listing.rhtml:3:in `_run_rhtml_plan__schedule_listing'
-
app/views/plan/_schedule_listing.rhtml:1:in `_run_rhtml_plan__schedule_listing'
-
app/views/plan/index.rhtml:6:in `_run_rhtml_plan_index'
-
vendor/plugins/textmate_footnotes/lib/textmate_footnotes.rb:60:in `render'
Po testach plugina w połączeniu z moim ChainsawOutputterm, postanowiłem nieco zmodyfikować kod plugina, żeby zwiększyć czytelność komunikatów trafiających do Chainsaw. Cała modyfikacja sprowadza się do zmiany oryginalnej implementacji metody QueryTrace#log_info_with_trace() na taką:
-
def log_info_with_trace(sql, name, runtime)
-
if @logger and @logger.debug?
-
trace = clean_trace(caller[2..-1])
-
fmt_trace = trace.join("\n")
-
sql += "\nCall trace:\n#{fmt_trace}"
-
end
-
log_info_without_trace(sql, name, runtime)
-
end
(podmiana tej metody jest spowodowana tylko chęcią poprawy czytelności, Query Trace z orginalną metodą działa również).
Miłej analizy logów :)
[config logger rails ruby]







