File tree Expand file tree Collapse file tree 3 files changed +43
-2
lines changed
Filter options
Expand file tree Collapse file tree 3 files changed +43
-2
lines changed
Original file line number Diff line number Diff line change @@ -131,12 +131,12 @@ def _format_msg_json(self, record, msg):
131
131
if isinstance (json_msg , dict ):
132
132
return json_msg
133
133
else :
134
- return { 'message' : str ( json_msg )}
134
+ return self . _format_msg_default ( record , msg )
135
135
except ValueError :
136
136
return self ._format_msg_default (record , msg )
137
137
138
138
def _format_msg_default (self , record , msg ):
139
- return {'message' : record . getMessage ( )}
139
+ return {'message' : super ( FluentRecordFormatter , self ). format ( record )}
140
140
141
141
def _format_by_exclusion (self , record ):
142
142
data = {}
Original file line number Diff line number Diff line change @@ -239,6 +239,26 @@ def test_non_string_dict_message(self):
239
239
# For some reason, non-string keys are ignored
240
240
self .assertFalse (42 in data [0 ][2 ])
241
241
242
+ def test_exception_message (self ):
243
+ handler = self .get_handler_class ()('app.follow' , port = self ._port )
244
+
245
+ with handler :
246
+ logging .basicConfig (level = logging .INFO )
247
+ log = logging .getLogger ('fluent.test' )
248
+ handler .setFormatter (fluent .handler .FluentRecordFormatter ())
249
+ log .addHandler (handler )
250
+ try :
251
+ raise Exception ('sample exception' )
252
+ except Exception :
253
+ log .exception ('it failed' )
254
+
255
+ data = self .get_data ()
256
+ message = data [0 ][2 ]['message' ]
257
+ # Includes the logged message, as well as the stack trace.
258
+ self .assertTrue ('it failed' in message )
259
+ self .assertTrue ('tests/test_asynchandler.py", line' in message )
260
+ self .assertTrue ('Exception: sample exception' in message )
261
+
242
262
243
263
class TestHandlerWithCircularQueue (unittest .TestCase ):
244
264
Q_SIZE = 3
Original file line number Diff line number Diff line change @@ -350,3 +350,24 @@ def test_non_string_dict_message(self):
350
350
data = self .get_data ()
351
351
# For some reason, non-string keys are ignored
352
352
self .assertFalse (42 in data [0 ][2 ])
353
+
354
+ def test_exception_message (self ):
355
+ handler = fluent .handler .FluentHandler ('app.follow' , port = self ._port )
356
+
357
+ with handler :
358
+ logging .basicConfig (level = logging .INFO )
359
+ log = logging .getLogger ('fluent.test' )
360
+ handler .setFormatter (fluent .handler .FluentRecordFormatter ())
361
+ log .addHandler (handler )
362
+ try :
363
+ raise Exception ('sample exception' )
364
+ except Exception :
365
+ log .exception ('it failed' )
366
+ log .removeHandler (handler )
367
+
368
+ data = self .get_data ()
369
+ message = data [0 ][2 ]['message' ]
370
+ # Includes the logged message, as well as the stack trace.
371
+ self .assertTrue ('it failed' in message )
372
+ self .assertTrue ('tests/test_handler.py", line' in message )
373
+ self .assertTrue ('Exception: sample exception' in message )
You can’t perform that action at this time.
0 commit comments