74 def __init__(self, *, verbose=False, colors_enabled=True):
79 def colorize_line(self, line):
80 if not line.startswith(
'tskv\t'):
84 def colorize_tskv(self, line):
85 row = tskv.parse_line(line)
88 def colorize_row(self, row):
90 flowid =
'-'.join([row.get(key,
'')
for key
in (
'link',
'trace_id')])
92 entry_type = row.pop(
'_type',
None)
93 link = row.get(
'link',
None)
94 level = row.pop(
'level',
'none')
95 text = row.pop(
'text',
'')
98 if entry_type ==
'request':
104 try_reformat_json(row.pop(
'body')),
108 elif entry_type ==
'response':
109 if 'meta_code' in row:
110 status_code = row.pop(
'meta_code')
115 text =
'Response finished'
119 try_reformat_json(row.pop(
'body')),
123 elif entry_type ==
'mockserver_request':
124 text =
'Mockserver request finished'
125 if 'meta_code' in row:
126 status_code = str(row.pop(
'meta_code'))
130 for key
in (
'method',
'url',
'status',
'exc_info',
'delay'):
131 value = row.pop(key,
None)
133 extra_fields.append(f
'{key}={value}')
136 logid = f
'[{self._requests[link]}]'
137 elif link
is not None:
142 level_color = LEVEL_COLORS.get(level)
143 flow_color = Colors.colorize(flowid)
146 self.
textcolor(f
'{level:<8}', level_color),
150 http_url_info = row.pop(
'http_url',
None)
152 http_url_info = http_url_info.removeprefix(
153 HTTP_LOCALHOST_PREFIX,
155 http_url_info = http_url_info.removesuffix(
'?')
156 http_url_info = http_url_info[http_url_info.find(
'/') + 1 :]
158 meta_code = row.pop(
'meta_code',
None)
160 http_url_info += f
' meta_code={meta_code}'
162 text = f
'{self.textcolor(http_url_info, Colors.GREEN)} {text}'
166 fields.append(
'<NO TEXT>')
170 fields.extend(extra_fields)
172 fields.extend([f
'{k}={v}' for k, v
in row.items()])
173 return ' '.join(fields)
175 def textcolor(self, text, color):
178 return f
'{color}{text}{Colors.DEFAULT}'
180 def _http_status(self, key, status):
181 color = HTTP_STATUS_COLORS.get(status[:1], Colors.DEFAULT)
182 return self.
textcolor(f
'{key}={status}', color)
184 def _build_request_info(self, row):
188 method = row.get(
'method',
'UNKNOWN')
189 return f
'{method} {uri}'