Skip to content

Commit d40695a

Browse files
committed
Fix issues with parameters handling and extra attributes
1 parent f887ca7 commit d40695a

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

sentry-ruby/lib/sentry/log_event.rb

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,8 @@ def parameters
131131
@parameters ||= begin
132132
return DEFAULT_PARAMETERS unless template
133133

134-
parameters = attributes[:parameters] || DEFAULT_PARAMETERS
134+
parameters = template_tokens.empty? ?
135+
attributes.fetch(:parameters, DEFAULT_PARAMETERS) : attributes.slice(*template_tokens)
135136

136137
if parameters.is_a?(Hash)
137138
parameters.each do |key, value|
@@ -145,8 +146,14 @@ def parameters
145146
end
146147
end
147148

149+
TOKEN_REGEXP = /%\{(\w+)\}/
150+
151+
def template_tokens
152+
@template_tokens ||= body.scan(TOKEN_REGEXP).flatten.map(&:to_sym)
153+
end
154+
148155
def is_template?
149-
body.is_a?(String) && body.include?("%")
156+
body.include?("%s") || TOKEN_REGEXP.match?(body)
150157
end
151158
end
152159
end

sentry-ruby/lib/sentry/structured_logger.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,11 @@ def fatal(message, parameters = [], **attributes)
127127
#
128128
# @return [LogEvent, nil] The created log event or nil if logging is disabled
129129
def log(level, message, parameters:, **attributes)
130-
if parameters.is_a?(Hash) && attributes.empty? && !message.include?("%")
131-
Sentry.capture_log(message, level: level, severity: LEVELS[level], **parameters)
132-
else
130+
case parameters
131+
when Array then
133132
Sentry.capture_log(message, level: level, severity: LEVELS[level], parameters: parameters, **attributes)
133+
else
134+
Sentry.capture_log(message, level: level, severity: LEVELS[level], **parameters)
134135
end
135136
end
136137
end

sentry-ruby/spec/sentry/structured_logger_spec.rb

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,7 @@
8686
end
8787

8888
it "logs with hash-based template parameters" do
89-
hash_params = { name: "Jane", day: "Monday" }
90-
Sentry.logger.public_send(level, "Hello %{name}, it is %{day}", hash_params)
89+
Sentry.logger.public_send(level, "Hello %{name}, it is %{day}", name: "Jane", day: "Monday")
9190

9291
expect(logs).to_not be_empty
9392

@@ -108,8 +107,7 @@
108107
end
109108

110109
it "logs with hash-based template parameters and extra attributes" do
111-
hash_params = { name: "Jane", day: "Monday" }
112-
Sentry.logger.public_send(level, "Hello %{name}, it is %{day}", hash_params, user_id: 123)
110+
Sentry.logger.public_send(level, "Hello %{name}, it is %{day}", name: "Jane", day: "Monday", user_id: 123)
113111

114112
expect(logs).to_not be_empty
115113

0 commit comments

Comments
 (0)