@@ -26,6 +26,7 @@ def test_logging_works_with_many_loggers(sentry_init, capture_events, logger):
2626 assert event ["level" ] == "fatal"
2727 assert not event ["logentry" ]["params" ]
2828 assert event ["logentry" ]["message" ] == "LOL"
29+ assert event ["logentry" ]["formatted" ] == "LOL"
2930 assert any (crumb ["message" ] == "bread" for crumb in event ["breadcrumbs" ]["values" ])
3031
3132
@@ -112,6 +113,7 @@ def test_logging_level(sentry_init, capture_events):
112113 (event ,) = events
113114 assert event ["level" ] == "error"
114115 assert event ["logentry" ]["message" ] == "hi"
116+ assert event ["logentry" ]["formatted" ] == "hi"
115117
116118 del events [:]
117119
@@ -152,6 +154,7 @@ def test_custom_log_level_names(sentry_init, capture_events):
152154 assert events
153155 assert events [0 ]["level" ] == sentry_level
154156 assert events [0 ]["logentry" ]["message" ] == "Trying level %s"
157+ assert events [0 ]["logentry" ]["formatted" ] == f"Trying level { logging_level } "
155158 assert events [0 ]["logentry" ]["params" ] == [logging_level ]
156159
157160 del events [:]
@@ -177,6 +180,7 @@ def filter(self, record):
177180
178181 (event ,) = events
179182 assert event ["logentry" ]["message" ] == "hi"
183+ assert event ["logentry" ]["formatted" ] == "hi"
180184
181185
182186def test_logging_captured_warnings (sentry_init , capture_events , recwarn ):
@@ -198,10 +202,16 @@ def test_logging_captured_warnings(sentry_init, capture_events, recwarn):
198202 assert events [0 ]["level" ] == "warning"
199203 # Captured warnings start with the path where the warning was raised
200204 assert "UserWarning: first" in events [0 ]["logentry" ]["message" ]
205+ assert "UserWarning: first" in events [0 ]["logentry" ]["formatted" ]
206+ # For warnings, the message and formatted message are the same
207+ assert events [0 ]["logentry" ]["message" ] == events [0 ]["logentry" ]["formatted" ]
201208 assert events [0 ]["logentry" ]["params" ] == []
202209
203210 assert events [1 ]["level" ] == "warning"
204211 assert "UserWarning: second" in events [1 ]["logentry" ]["message" ]
212+ assert "UserWarning: second" in events [1 ]["logentry" ]["formatted" ]
213+ # For warnings, the message and formatted message are the same
214+ assert events [1 ]["logentry" ]["message" ] == events [1 ]["logentry" ]["formatted" ]
205215 assert events [1 ]["logentry" ]["params" ] == []
206216
207217 # Using recwarn suppresses the "third" warning in the test output
@@ -234,6 +244,7 @@ def test_ignore_logger_wildcard(sentry_init, capture_events):
234244
235245 (event ,) = events
236246 assert event ["logentry" ]["message" ] == "hi"
247+ assert event ["logentry" ]["formatted" ] == "hi"
237248
238249
239250def test_logging_dictionary_interpolation (sentry_init , capture_events ):
@@ -245,6 +256,10 @@ def test_logging_dictionary_interpolation(sentry_init, capture_events):
245256
246257 (event ,) = events
247258 assert event ["logentry" ]["message" ] == "this is a log with a dictionary %s"
259+ assert (
260+ event ["logentry" ]["formatted" ]
261+ == "this is a log with a dictionary {'foo': 'bar'}"
262+ )
248263 assert event ["logentry" ]["params" ] == {"foo" : "bar" }
249264
250265
@@ -263,4 +278,8 @@ def test_logging_dictionary_args(sentry_init, capture_events):
263278 event ["logentry" ]["message" ]
264279 == "the value of foo is %(foo)s, and the value of bar is %(bar)s"
265280 )
281+ assert (
282+ event ["logentry" ]["formatted" ]
283+ == "the value of foo is bar, and the value of bar is baz"
284+ )
266285 assert event ["logentry" ]["params" ] == {"foo" : "bar" , "bar" : "baz" }
0 commit comments