@@ -26,22 +26,20 @@ class LogHandlerTest(BaseTest):
2626 def setUp (self ):
2727 rollbar ._initialized = False
2828 rollbar .SETTINGS = copy .deepcopy (_default_settings )
29-
30- def _create_logger (self ):
31- logger = logging .getLogger (__name__ )
32- logger .setLevel (logging .DEBUG )
29+ self .logger = logging .getLogger (__name__ )
30+ self .logger .setLevel (logging .DEBUG )
3331
3432 self .rollbar_handler = RollbarHandler (_test_access_token , _test_environment )
3533 self .rollbar_handler .setLevel (logging .WARNING )
3634
37- logger .addHandler (self .rollbar_handler )
35+ self . logger .addHandler (self .rollbar_handler )
3836
39- return logger
37+ def tearDown (self ):
38+ self .logger .removeHandler (self .rollbar_handler )
4039
4140 @mock .patch ('rollbar.send_payload' )
4241 def test_message_gets_formatted (self , send_payload ):
43- logger = self ._create_logger ()
44- logger .warning ("Hello %d %s" , 1 , 'world' )
42+ self .logger .warning ("Hello %d %s" , 1 , 'world' )
4543
4644 payload = send_payload .call_args [0 ][0 ]
4745
@@ -53,22 +51,20 @@ def test_message_gets_formatted(self, send_payload):
5351
5452 @mock .patch ('rollbar.send_payload' )
5553 def test_string_or_int_level (self , send_payload ):
56- logger = self ._create_logger ()
57- logger .setLevel (logging .ERROR )
54+ self .logger .setLevel (logging .ERROR )
5855 self .rollbar_handler .setLevel ('WARNING' )
59- logger .error ("I am an error" )
56+ self . logger .error ("I am an error" )
6057
6158 payload = send_payload .call_args [0 ][0 ]
6259
6360 self .assertEqual (payload ['data' ]['level' ], 'error' )
6461
6562 self .rollbar_handler .setLevel (logging .WARNING )
66- logger .error ("I am an error" )
63+ self . logger .error ("I am an error" )
6764
6865 self .assertEqual (payload ['data' ]['level' ], 'error' )
6966
7067 def test_request_is_get_from_log_record_if_present (self ):
71- logger = self ._create_logger ()
7268 # Request objects vary depending on python frameworks or packages.
7369 # Using a dictionary for this test is enough.
7470 request = {"fake" : "request" , "for" : "testing purporse" }
@@ -77,15 +73,15 @@ def test_request_is_get_from_log_record_if_present(self):
7773 # just need to be sure that proper rollbar function is called
7874 # with passed request as argument.
7975 with mock .patch ("rollbar.report_message" ) as report_message_mock :
80- logger .warning ("Warning message" , extra = {"request" : request })
76+ self . logger .warning ("Warning message" , extra = {"request" : request })
8177 self .assertEqual (report_message_mock .call_args [1 ]["request" ], request )
8278
8379 # if you call logger.exception outside of an exception
8480 # handler, it shouldn't try to report exc_info, since it
8581 # won't have any
8682 with mock .patch ("rollbar.report_exc_info" ) as report_exc_info :
8783 with mock .patch ("rollbar.report_message" ) as report_message_mock :
88- logger .exception ("Exception message" , extra = {"request" : request })
84+ self . logger .exception ("Exception message" , extra = {"request" : request })
8985 report_exc_info .assert_not_called ()
9086 self .assertEqual (report_message_mock .call_args [1 ]["request" ], request )
9187
@@ -94,14 +90,12 @@ def test_request_is_get_from_log_record_if_present(self):
9490 try :
9591 raise Exception ()
9692 except :
97- logger .exception ("Exception message" , extra = {"request" : request })
93+ self . logger .exception ("Exception message" , extra = {"request" : request })
9894 self .assertEqual (report_exc_info .call_args [1 ]["request" ], request )
9995 report_message_mock .assert_not_called ()
10096
10197 @mock .patch ('rollbar.send_payload' )
10298 def test_nested_exception_trace_chain (self , send_payload ):
103- logger = self ._create_logger ()
104-
10599 def _raise_context ():
106100 bar_local = 'bar'
107101 raise CauseException ('bar' )
@@ -120,7 +114,7 @@ def _raise_ex():
120114 setattr (e , '__context__' , context ) # PEP-3134
121115 raise e
122116 except :
123- logger .exception ("Bad time" )
117+ self . logger .exception ("Bad time" )
124118
125119 _raise_ex ()
126120
@@ -139,8 +133,6 @@ def _raise_ex():
139133
140134 @mock .patch ('rollbar.send_payload' )
141135 def test_not_nested_exception_trace_chain (self , send_payload ):
142- logger = self ._create_logger ()
143-
144136 def _raise_context ():
145137 bar_local = 'bar'
146138 raise CauseException ('bar' )
@@ -149,7 +141,7 @@ def _raise_ex():
149141 try :
150142 _raise_context ()
151143 except :
152- logger .exception ("Bad time" )
144+ self . logger .exception ("Bad time" )
153145
154146 _raise_ex ()
155147
@@ -165,3 +157,34 @@ def _raise_ex():
165157 self .assertEqual ('Bad time' , payload ['data' ]['custom' ]['exception' ]['description' ])
166158 if trace is not None :
167159 self .assertEqual ('Bad time' , trace ['exception' ]['description' ])
160+
161+ @mock .patch ('rollbar.send_payload' )
162+ def test_logging_extra (self , send_payload ):
163+ self .logger .error ("Test error" , extra = dict (test_attribute = 1 , test_other = 'test' ))
164+
165+ payload = send_payload .call_args [0 ][0 ]
166+ self .assertEqual (payload ['data' ]['body' ]['message' ].get ('test_attribute' ), 1 )
167+ self .assertEqual (payload ['data' ]['body' ]['message' ].get ('test_other' ), 'test' )
168+ self .assertEqual (payload ['data' ]['custom' ].get ('test_attribute' ), 1 )
169+ self .assertEqual (payload ['data' ]['custom' ].get ('test_other' ), 'test' )
170+
171+ @mock .patch ('rollbar.send_payload' )
172+ def test_logging_extra_data (self , send_payload ):
173+ self .logger .error (
174+ "Test error" ,
175+ extra = dict (extra_data = dict (test_attribute = 1 , test_other = 'test' )))
176+
177+ payload = send_payload .call_args [0 ][0 ]
178+ self .assertEqual (payload ['data' ]['body' ]['message' ].get ('test_attribute' ), 1 )
179+ self .assertEqual (payload ['data' ]['body' ]['message' ].get ('test_other' ), 'test' )
180+ self .assertEqual (payload ['data' ]['custom' ].get ('test_attribute' ), 1 )
181+ self .assertEqual (payload ['data' ]['custom' ].get ('test_other' ), 'test' )
182+
183+ @mock .patch ('rollbar.send_payload' )
184+ def test_log_formatting (self , send_payload ):
185+ self .rollbar_handler .formatter = logging .Formatter (
186+ '%(test_other)s[%(test_attribute)s]: %(message)s'
187+ )
188+ self .logger .error ("Test error" , extra = dict (test_attribute = 1 , test_other = 'test' ))
189+ payload = send_payload .call_args [0 ][0 ]
190+ self .assertEqual (payload ['data' ]['body' ]['message' ]['body' ], 'test[1]: Test error' )
0 commit comments