21
21
22
22
class TestJsonLogger (unittest .TestCase ):
23
23
def setUp (self ):
24
- self .logger = logging .getLogger ("logging-test-{}" .format (random .randint (1 , 101 )))
25
- self .logger .setLevel (logging .DEBUG )
24
+ self .log = logging .getLogger ("logging-test-{}" .format (random .randint (1 , 101 )))
25
+ self .log .setLevel (logging .DEBUG )
26
26
self .buffer = StringIO ()
27
27
28
- self .logHandler = logging .StreamHandler (self .buffer )
29
- self .logger .addHandler (self .logHandler )
28
+ self .log_handler = logging .StreamHandler (self .buffer )
29
+ self .log .addHandler (self .log_handler )
30
30
31
- def testDefaultFormat (self ):
31
+ def test_default_format (self ):
32
32
fr = jsonlogger .JsonFormatter ()
33
- self .logHandler .setFormatter (fr )
33
+ self .log_handler .setFormatter (fr )
34
34
35
35
msg = "testing logging format"
36
- self .logger .info (msg )
37
- logJson = json .loads (self .buffer .getvalue ())
36
+ self .log .info (msg )
37
+ log_json = json .loads (self .buffer .getvalue ())
38
38
39
- self .assertEqual (logJson ["message" ], msg )
39
+ self .assertEqual (log_json ["message" ], msg )
40
40
41
- def testPercentageFormat (self ):
41
+ def test_percentage_format (self ):
42
42
fr = jsonlogger .JsonFormatter (
43
43
# All kind of different styles to check the regex
44
44
'[%(levelname)8s] %(message)s %(filename)s:%(lineno)d %(asctime)'
45
45
)
46
- self .logHandler .setFormatter (fr )
46
+ self .log_handler .setFormatter (fr )
47
47
48
48
msg = "testing logging format"
49
- self .logger .info (msg )
50
- logJson = json .loads (self .buffer .getvalue ())
49
+ self .log .info (msg )
50
+ log_json = json .loads (self .buffer .getvalue ())
51
51
52
- self .assertEqual (logJson ["message" ], msg )
53
- self .assertEqual (logJson .keys (), {'levelname' , 'message' , 'filename' , 'lineno' , 'asctime' })
52
+ self .assertEqual (log_json ["message" ], msg )
53
+ self .assertEqual (log_json .keys (), {'levelname' , 'message' , 'filename' , 'lineno' , 'asctime' })
54
54
55
- def testRenameBaseField (self ):
55
+ def test_rename_base_field (self ):
56
56
fr = jsonlogger .JsonFormatter (rename_fields = {'message' : '@message' })
57
- self .logHandler .setFormatter (fr )
57
+ self .log_handler .setFormatter (fr )
58
58
59
59
msg = "testing logging format"
60
- self .logger .info (msg )
61
- logJson = json .loads (self .buffer .getvalue ())
60
+ self .log .info (msg )
61
+ log_json = json .loads (self .buffer .getvalue ())
62
62
63
- self .assertEqual (logJson ["@message" ], msg )
63
+ self .assertEqual (log_json ["@message" ], msg )
64
64
65
- def testAddStaticFields (self ):
65
+ def test_add_static_fields (self ):
66
66
fr = jsonlogger .JsonFormatter (static_fields = {'log_stream' : 'kafka' })
67
67
68
- self .logHandler .setFormatter (fr )
68
+ self .log_handler .setFormatter (fr )
69
69
70
70
msg = "testing static fields"
71
- self .logger .info (msg )
72
- logJson = json .loads (self .buffer .getvalue ())
71
+ self .log .info (msg )
72
+ log_json = json .loads (self .buffer .getvalue ())
73
73
74
- self .assertEqual (logJson ["log_stream" ], "kafka" )
75
- self .assertEqual (logJson ["message" ], msg )
74
+ self .assertEqual (log_json ["log_stream" ], "kafka" )
75
+ self .assertEqual (log_json ["message" ], msg )
76
76
77
- def testFormatKeys (self ):
77
+ def test_format_keys (self ):
78
78
supported_keys = [
79
79
'asctime' ,
80
80
'created' ,
@@ -99,96 +99,97 @@ def testFormatKeys(self):
99
99
custom_format = ' ' .join (log_format (supported_keys ))
100
100
101
101
fr = jsonlogger .JsonFormatter (custom_format )
102
- self .logHandler .setFormatter (fr )
102
+ self .log_handler .setFormatter (fr )
103
103
104
104
msg = "testing logging format"
105
- self .logger .info (msg )
105
+ self .log .info (msg )
106
106
log_msg = self .buffer .getvalue ()
107
107
log_json = json .loads (log_msg )
108
108
109
109
for supported_key in supported_keys :
110
110
if supported_key in log_json :
111
111
self .assertTrue (True )
112
112
113
- def testUnknownFormatKey (self ):
113
+ def test_unknown_format_key (self ):
114
114
fr = jsonlogger .JsonFormatter ('%(unknown_key)s %(message)s' )
115
115
116
- self .logHandler .setFormatter (fr )
116
+ self .log_handler .setFormatter (fr )
117
117
msg = "testing unknown logging format"
118
118
try :
119
- self .logger .info (msg )
120
- except :
119
+ self .log .info (msg )
120
+ except Exception :
121
121
self .assertTrue (False , "Should succeed" )
122
122
123
- def testLogADict (self ):
123
+ def test_log_adict (self ):
124
124
fr = jsonlogger .JsonFormatter ()
125
- self .logHandler .setFormatter (fr )
125
+ self .log_handler .setFormatter (fr )
126
126
127
127
msg = {"text" : "testing logging" , "num" : 1 , 5 : "9" ,
128
128
"nested" : {"more" : "data" }}
129
- self .logger .info (msg )
130
- logJson = json .loads (self .buffer .getvalue ())
131
- self .assertEqual (logJson .get ("text" ), msg ["text" ])
132
- self .assertEqual (logJson .get ("num" ), msg ["num" ])
133
- self .assertEqual (logJson .get ("5" ), msg [5 ])
134
- self .assertEqual (logJson .get ("nested" ), msg ["nested" ])
135
- self .assertEqual (logJson ["message" ], "" )
136
-
137
- def testLogExtra (self ):
129
+
130
+ self .log .info (msg )
131
+ log_json = json .loads (self .buffer .getvalue ())
132
+ self .assertEqual (log_json .get ("text" ), msg ["text" ])
133
+ self .assertEqual (log_json .get ("num" ), msg ["num" ])
134
+ self .assertEqual (log_json .get ("5" ), msg [5 ])
135
+ self .assertEqual (log_json .get ("nested" ), msg ["nested" ])
136
+ self .assertEqual (log_json ["message" ], None )
137
+
138
+ def test_log_extra (self ):
138
139
fr = jsonlogger .JsonFormatter ()
139
- self .logHandler .setFormatter (fr )
140
+ self .log_handler .setFormatter (fr )
140
141
141
142
extra = {"text" : "testing logging" , "num" : 1 , 5 : "9" ,
142
143
"nested" : {"more" : "data" }}
143
- self .logger .info ("hello" , extra = extra )
144
- logJson = json .loads (self .buffer .getvalue ())
145
- self .assertEqual (logJson .get ("text" ), extra ["text" ])
146
- self .assertEqual (logJson .get ("num" ), extra ["num" ])
147
- self .assertEqual (logJson .get ("5" ), extra [5 ])
148
- self .assertEqual (logJson .get ("nested" ), extra ["nested" ])
149
- self .assertEqual (logJson ["message" ], "hello" )
150
-
151
- def testJsonDefaultEncoder (self ):
144
+ self .log .info ("hello" , extra = extra )
145
+ log_json = json .loads (self .buffer .getvalue ())
146
+ self .assertEqual (log_json .get ("text" ), extra ["text" ])
147
+ self .assertEqual (log_json .get ("num" ), extra ["num" ])
148
+ self .assertEqual (log_json .get ("5" ), extra [5 ])
149
+ self .assertEqual (log_json .get ("nested" ), extra ["nested" ])
150
+ self .assertEqual (log_json ["message" ], "hello" )
151
+
152
+ def test_json_default_encoder (self ):
152
153
fr = jsonlogger .JsonFormatter ()
153
- self .logHandler .setFormatter (fr )
154
+ self .log_handler .setFormatter (fr )
154
155
155
156
msg = {"adate" : datetime .datetime (1999 , 12 , 31 , 23 , 59 ),
156
157
"otherdate" : datetime .date (1789 , 7 , 14 ),
157
158
"otherdatetime" : datetime .datetime (1789 , 7 , 14 , 23 , 59 ),
158
159
"otherdatetimeagain" : datetime .datetime (1900 , 1 , 1 )}
159
- self .logger .info (msg )
160
- logJson = json .loads (self .buffer .getvalue ())
161
- self .assertEqual (logJson .get ("adate" ), "1999-12-31T23:59:00" )
162
- self .assertEqual (logJson .get ("otherdate" ), "1789-07-14" )
163
- self .assertEqual (logJson .get ("otherdatetime" ), "1789-07-14T23:59:00" )
164
- self .assertEqual (logJson .get ("otherdatetimeagain" ),
160
+ self .log .info (msg )
161
+ log_json = json .loads (self .buffer .getvalue ())
162
+ self .assertEqual (log_json .get ("adate" ), "1999-12-31T23:59:00" )
163
+ self .assertEqual (log_json .get ("otherdate" ), "1789-07-14" )
164
+ self .assertEqual (log_json .get ("otherdatetime" ), "1789-07-14T23:59:00" )
165
+ self .assertEqual (log_json .get ("otherdatetimeagain" ),
165
166
"1900-01-01T00:00:00" )
166
167
167
168
@unittest .mock .patch ('time.time' , return_value = 1500000000.0 )
168
- def testJsonDefaultEncoderWithTimestamp (self , time_mock ):
169
+ def test_json_default_encoder_with_timestamp (self , time_mock ):
169
170
fr = jsonlogger .JsonFormatter (timestamp = True )
170
- self .logHandler .setFormatter (fr )
171
+ self .log_handler .setFormatter (fr )
171
172
172
- self .logger .info ("Hello" )
173
+ self .log .info ("Hello" )
173
174
174
175
self .assertTrue (time_mock .called )
175
- logJson = json .loads (self .buffer .getvalue ())
176
- self .assertEqual (logJson .get ("timestamp" ), "2017-07-14T02:40:00+00:00" )
176
+ log_json = json .loads (self .buffer .getvalue ())
177
+ self .assertEqual (log_json .get ("timestamp" ), "2017-07-14T02:40:00+00:00" )
177
178
178
- def testJsonCustomDefault (self ):
179
+ def test_json_custom_default (self ):
179
180
def custom (o ):
180
181
return "very custom"
181
182
fr = jsonlogger .JsonFormatter (json_default = custom )
182
- self .logHandler .setFormatter (fr )
183
+ self .log_handler .setFormatter (fr )
183
184
184
185
msg = {"adate" : datetime .datetime (1999 , 12 , 31 , 23 , 59 ),
185
186
"normal" : "value" }
186
- self .logger .info (msg )
187
- logJson = json .loads (self .buffer .getvalue ())
188
- self .assertEqual (logJson .get ("adate" ), "very custom" )
189
- self .assertEqual (logJson .get ("normal" ), "value" )
187
+ self .log .info (msg )
188
+ log_json = json .loads (self .buffer .getvalue ())
189
+ self .assertEqual (log_json .get ("adate" ), "very custom" )
190
+ self .assertEqual (log_json .get ("normal" ), "value" )
190
191
191
- def testJsonCustomLogicAddsField (self ):
192
+ def test_json_custom_logic_adds_field (self ):
192
193
class CustomJsonFormatter (jsonlogger .JsonFormatter ):
193
194
194
195
def process_log_record (self , log_record ):
@@ -197,43 +198,42 @@ def process_log_record(self, log_record):
197
198
# style
198
199
return jsonlogger .JsonFormatter .process_log_record (self , log_record )
199
200
200
- self .logHandler .setFormatter (CustomJsonFormatter ())
201
- self .logger .info ("message" )
202
- logJson = json .loads (self .buffer .getvalue ())
203
- self .assertEqual (logJson .get ("custom" ), "value" )
201
+ self .log_handler .setFormatter (CustomJsonFormatter ())
202
+ self .log .info ("message" )
203
+ log_json = json .loads (self .buffer .getvalue ())
204
+ self .assertEqual (log_json .get ("custom" ), "value" )
204
205
205
- def testExcInfo (self ):
206
+ def test_exc_info (self ):
206
207
fr = jsonlogger .JsonFormatter ()
207
- self .logHandler .setFormatter (fr )
208
+ self .log_handler .setFormatter (fr )
208
209
try :
209
210
raise Exception ('test' )
210
211
except Exception :
211
-
212
- self .logger .exception ("hello" )
212
+ self .log .exception ("hello" )
213
213
214
214
expected_value = traceback .format_exc ()
215
215
# Formatter removes trailing new line
216
216
if expected_value .endswith ('\n ' ):
217
217
expected_value = expected_value [:- 1 ]
218
218
219
- logJson = json .loads (self .buffer .getvalue ())
220
- self .assertEqual (logJson .get ("exc_info" ), expected_value )
219
+ log_json = json .loads (self .buffer .getvalue ())
220
+ self .assertEqual (log_json .get ("exc_info" ), expected_value )
221
221
222
- def testEnsureAsciiTrue (self ):
222
+ def test_ensure_ascii_true (self ):
223
223
fr = jsonlogger .JsonFormatter ()
224
- self .logHandler .setFormatter (fr )
225
- self .logger .info ('Привет' )
224
+ self .log_handler .setFormatter (fr )
225
+ self .log .info ('Привет' )
226
226
msg = self .buffer .getvalue ().split ('"message": "' , 1 )[1 ].split ('"' , 1 )[0 ]
227
227
self .assertEqual (msg , r"\u041f\u0440\u0438\u0432\u0435\u0442" )
228
228
229
- def testEnsureAsciiFalse (self ):
229
+ def test_ensure_ascii_false (self ):
230
230
fr = jsonlogger .JsonFormatter (json_ensure_ascii = False )
231
- self .logHandler .setFormatter (fr )
232
- self .logger .info ('Привет' )
231
+ self .log_handler .setFormatter (fr )
232
+ self .log .info ('Привет' )
233
233
msg = self .buffer .getvalue ().split ('"message": "' , 1 )[1 ].split ('"' , 1 )[0 ]
234
234
self .assertEqual (msg , "Привет" )
235
235
236
- def testCustomObjectSerialization (self ):
236
+ def test_custom_object_serialization (self ):
237
237
def encode_complex (z ):
238
238
if isinstance (z , complex ):
239
239
return (z .real , z .imag )
@@ -243,13 +243,13 @@ def encode_complex(z):
243
243
244
244
formatter = jsonlogger .JsonFormatter (json_default = encode_complex ,
245
245
json_encoder = json .JSONEncoder )
246
- self .logHandler .setFormatter (formatter )
246
+ self .log_handler .setFormatter (formatter )
247
247
248
248
value = {
249
249
"special" : complex (3 , 8 ),
250
250
}
251
251
252
- self .logger .info (" message" , extra = value )
252
+ self .log .info (" message" , extra = value )
253
253
msg = self .buffer .getvalue ()
254
254
self .assertEqual (msg , "{\" message\" : \" message\" , \" special\" : [3.0, 8.0]}\n " )
255
255
0 commit comments