Skip to content

Commit 11ae361

Browse files
committed
add formatted args to mailer logger
1 parent 1544ef0 commit 11ae361

File tree

1 file changed

+28
-2
lines changed

1 file changed

+28
-2
lines changed

lib/rails_semantic_logger/action_mailer/log_subscriber.rb

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,13 @@ def payload
5555
h[:cc] = event.payload[:cc]
5656
h[:date] = date
5757
h[:duration] = event.duration.round(2) if log_duration?
58+
h[:args] = formatted_args
5859
end
5960
end
6061

6162
def date
62-
if event.payload[:date].respond_to?(:strftime)
63-
event.payload[:date]
63+
if event.payload[:date].respond_to?(:to_time)
64+
event.payload[:date].to_time.utc
6465
elsif event.payload[:date].is_a?(String)
6566
Time.parse(date).utc
6667
else
@@ -80,6 +81,31 @@ def action
8081
event.payload[:action]
8182
end
8283

84+
def formatted_args
85+
if defined?(mailer.contantize.log_arguments?) && !mailer.contantize.log_arguments?
86+
""
87+
else
88+
JSON.pretty_generate(event.payload[:args].map { |arg| format(arg) }) if event.payload[:args].present?
89+
end
90+
end
91+
92+
def format(arg)
93+
case arg
94+
when Hash
95+
arg.transform_values { |value| format(value) }
96+
when Array
97+
arg.map { |value| format(value) }
98+
when GlobalID::Identification
99+
begin
100+
arg.to_global_id
101+
rescue StandardError
102+
arg
103+
end
104+
else
105+
arg
106+
end
107+
end
108+
83109
def log_duration?
84110
@log_duration
85111
end

0 commit comments

Comments
 (0)