@@ -19,10 +19,10 @@ def initialize
1919 def render_template ( event )
2020 return unless should_log?
2121
22- payload = {
22+ payload = {
2323 template : from_rails_root ( event . payload [ :identifier ] )
2424 }
25- payload [ :within ] = from_rails_root ( event . payload [ :layout ] ) if event . payload [ :layout ]
25+ payload [ :within ] = from_rails_root ( event . payload [ :layout ] ) if event . payload [ :layout ]
2626 payload [ :allocations ] = event . allocations if event . respond_to? ( :allocations )
2727
2828 logger . measure (
@@ -36,11 +36,11 @@ def render_template(event)
3636 def render_partial ( event )
3737 return unless should_log?
3838
39- payload = {
39+ payload = {
4040 partial : from_rails_root ( event . payload [ :identifier ] )
4141 }
42- payload [ :within ] = from_rails_root ( event . payload [ :layout ] ) if event . payload [ :layout ]
43- payload [ :cache ] = event . payload [ :cache_hit ] unless event . payload [ :cache_hit ] . nil?
42+ payload [ :within ] = from_rails_root ( event . payload [ :layout ] ) if event . payload [ :layout ]
43+ payload [ :cache ] = event . payload [ :cache_hit ] unless event . payload [ :cache_hit ] . nil?
4444 payload [ :allocations ] = event . allocations if event . respond_to? ( :allocations )
4545
4646 logger . measure (
@@ -56,11 +56,11 @@ def render_collection(event)
5656
5757 identifier = event . payload [ :identifier ] || "templates"
5858
59- payload = {
59+ payload = {
6060 template : from_rails_root ( identifier ) ,
6161 count : event . payload [ :count ]
6262 }
63- payload [ :cache_hits ] = event . payload [ :cache_hits ] if event . payload [ :cache_hits ]
63+ payload [ :cache_hits ] = event . payload [ :cache_hits ] if event . payload [ :cache_hits ]
6464 payload [ :allocations ] = event . allocations if event . respond_to? ( :allocations )
6565
6666 logger . measure (
@@ -72,16 +72,58 @@ def render_collection(event)
7272 end
7373
7474 def start ( name , id , payload )
75- if ( name == "render_template.action_view" ) && should_log?
76- payload = { template : from_rails_root ( payload [ :identifier ] ) }
75+ if ( name == "render_template.action_view" || name == "render_layout.action_view" ) && should_log?
76+ qualifier = " layout" if name == "render_layout.action_view"
77+ payload = { template : from_rails_root ( payload [ :identifier ] ) }
7778 payload [ :within ] = from_rails_root ( payload [ :layout ] ) if payload [ :layout ]
7879
79- logger . send ( self . class . rendered_log_level , message : "Rendering" , payload : payload )
80+ logger . send ( self . class . rendered_log_level , message : "Rendering#{ qualifier } " , payload : payload )
8081 end
8182
8283 super
8384 end
8485
86+ if ( Rails ::VERSION ::MAJOR == 7 && Rails ::VERSION ::MINOR >= 1 ) || Rails ::VERSION ::MAJOR > 7
87+ class Start # :nodoc:
88+ def start ( name , id , payload )
89+ return unless %w[ render_template.action_view render_layout.action_view ] . include? ( name )
90+
91+ qualifier = " layout" if name == "render_layout.action_view"
92+ payload = { template : from_rails_root ( payload [ :identifier ] ) }
93+ payload [ :within ] = from_rails_root ( payload [ :layout ] ) if payload [ :layout ]
94+
95+ logger . debug ( message : "Rendering#{ qualifier } " , payload : payload )
96+ end
97+
98+ def finish ( name , id , payload ) end
99+
100+ private
101+
102+ def from_rails_root ( string )
103+ string = string . sub ( rails_root , "" )
104+ string . sub! ( VIEWS_PATTERN , "" )
105+ string
106+ end
107+
108+ def rails_root # :doc:
109+ @root ||= "#{ Rails . root } /"
110+ end
111+
112+ def logger
113+ @logger ||= SemanticLogger [ "ActionView" ]
114+ end
115+ end
116+
117+ def self . attach_to ( *)
118+ ActiveSupport ::Notifications . unsubscribe ( "render_template.action_view" )
119+ ActiveSupport ::Notifications . unsubscribe ( "render_layout.action_view" )
120+ ActiveSupport ::Notifications . subscribe ( "render_template.action_view" , RailsSemanticLogger ::ActionView ::LogSubscriber ::Start . new )
121+ ActiveSupport ::Notifications . subscribe ( "render_layout.action_view" , RailsSemanticLogger ::ActionView ::LogSubscriber ::Start . new )
122+
123+ super
124+ end
125+ end
126+
85127 private
86128
87129 @logger = SemanticLogger [ "ActionView" ]
0 commit comments