@@ -62,6 +62,16 @@ def test_rename_base_field(self):
62
62
63
63
self .assertEqual (log_json ["@message" ], msg )
64
64
65
+ def test_rename_nonexistent_field (self ):
66
+ fr = jsonlogger .JsonFormatter (rename_fields = {'nonexistent_key' : 'new_name' })
67
+ self .log_handler .setFormatter (fr )
68
+
69
+ stderr_watcher = StringIO ()
70
+ sys .stderr = stderr_watcher
71
+ self .log .info ("testing logging rename" )
72
+
73
+ self .assertTrue ("KeyError: 'nonexistent_key'" in stderr_watcher .getvalue ())
74
+
65
75
def test_add_static_fields (self ):
66
76
fr = jsonlogger .JsonFormatter (static_fields = {'log_stream' : 'kafka' })
67
77
@@ -133,7 +143,7 @@ def test_log_adict(self):
133
143
self .assertEqual (log_json .get ("num" ), msg ["num" ])
134
144
self .assertEqual (log_json .get ("5" ), msg [5 ])
135
145
self .assertEqual (log_json .get ("nested" ), msg ["nested" ])
136
- self .assertEqual (log_json ["message" ], '' )
146
+ self .assertEqual (log_json ["message" ], "" )
137
147
138
148
def test_log_extra (self ):
139
149
fr = jsonlogger .JsonFormatter ()
@@ -203,22 +213,35 @@ def process_log_record(self, log_record):
203
213
log_json = json .loads (self .buffer .getvalue ())
204
214
self .assertEqual (log_json .get ("custom" ), "value" )
205
215
206
- def test_exc_info (self ):
207
- fr = jsonlogger .JsonFormatter ()
208
- self .log_handler .setFormatter (fr )
216
+ def get_traceback_from_exception_followed_by_log_call (self ) -> str :
209
217
try :
210
218
raise Exception ('test' )
211
219
except Exception :
212
220
self .log .exception ("hello" )
213
-
214
- expected_value = traceback .format_exc ()
221
+ str_traceback = traceback .format_exc ()
215
222
# Formatter removes trailing new line
216
- if expected_value .endswith ('\n ' ):
217
- expected_value = expected_value [:- 1 ]
223
+ if str_traceback .endswith ('\n ' ):
224
+ str_traceback = str_traceback [:- 1 ]
225
+
226
+ return str_traceback
227
+
228
+ def test_exc_info (self ):
229
+ fr = jsonlogger .JsonFormatter ()
230
+ self .log_handler .setFormatter (fr )
231
+ expected_value = self .get_traceback_from_exception_followed_by_log_call ()
218
232
219
233
log_json = json .loads (self .buffer .getvalue ())
220
234
self .assertEqual (log_json .get ("exc_info" ), expected_value )
221
235
236
+ def test_exc_info_renamed (self ):
237
+ fr = jsonlogger .JsonFormatter ("%(exc_info)s" , rename_fields = {"exc_info" : "stack_trace" })
238
+ self .log_handler .setFormatter (fr )
239
+ expected_value = self .get_traceback_from_exception_followed_by_log_call ()
240
+
241
+ log_json = json .loads (self .buffer .getvalue ())
242
+ self .assertEqual (log_json .get ("stack_trace" ), expected_value )
243
+ self .assertEqual (log_json .get ("exc_info" ), None )
244
+
222
245
def test_ensure_ascii_true (self ):
223
246
fr = jsonlogger .JsonFormatter ()
224
247
self .log_handler .setFormatter (fr )
0 commit comments