-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlog.py
More file actions
49 lines (45 loc) · 1.44 KB
/
log.py
File metadata and controls
49 lines (45 loc) · 1.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import json
import logging
class LogglyJSONFormatter(logging.Formatter):
def formatException(self, exc_info):
"""
Format an exception so that it prints on a single line.
"""
result = super(LogglyJSONFormatter, self).formatException(exc_info)
return repr(result)
def format(self, record):
"""
:param record: sample record object: {
'name': 'loki',
'msg': 'some text',
'args': (),
'levelname': 'INFO',
'levelno': 20,
'pathname': 'server.py',
'filename': 'server.py',
'module': 'server',
'exc_info': None,
'exc_text': None,
'stack_info': None,
'lineno': 42,
'funcName': 'get',
'created': 1498404672.572333,
'msecs': 572.3330974578857,
'relativeCreated': 4496.434211730957,
'thread': 140735896224704,
'threadName': 'MainThread',
'processName': 'MainProcess',
'process': 5735}
:return:
"""
if isinstance(record.msg, dict):
message = json.dumps(record.msg)
else:
message = '{}'.format(record.msg)
return json.dumps({
'name': record.name,
'module': record.module,
'level': record.levelname,
'lineno': record.lineno,
'message': message
})