@@ -62,6 +62,16 @@ def test_rename_base_field(self):
6262
6363 self .assertEqual (log_json ["@message" ], msg )
6464
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+
6575 def test_add_static_fields (self ):
6676 fr = jsonlogger .JsonFormatter (static_fields = {'log_stream' : 'kafka' })
6777
@@ -133,7 +143,7 @@ def test_log_adict(self):
133143 self .assertEqual (log_json .get ("num" ), msg ["num" ])
134144 self .assertEqual (log_json .get ("5" ), msg [5 ])
135145 self .assertEqual (log_json .get ("nested" ), msg ["nested" ])
136- self .assertEqual (log_json ["message" ], '' )
146+ self .assertEqual (log_json ["message" ], "" )
137147
138148 def test_log_extra (self ):
139149 fr = jsonlogger .JsonFormatter ()
@@ -203,22 +213,35 @@ def process_log_record(self, log_record):
203213 log_json = json .loads (self .buffer .getvalue ())
204214 self .assertEqual (log_json .get ("custom" ), "value" )
205215
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 :
209217 try :
210218 raise Exception ('test' )
211219 except Exception :
212220 self .log .exception ("hello" )
213-
214- expected_value = traceback .format_exc ()
221+ str_traceback = traceback .format_exc ()
215222 # 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 ()
218232
219233 log_json = json .loads (self .buffer .getvalue ())
220234 self .assertEqual (log_json .get ("exc_info" ), expected_value )
221235
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+
222245 def test_ensure_ascii_true (self ):
223246 fr = jsonlogger .JsonFormatter ()
224247 self .log_handler .setFormatter (fr )
0 commit comments