mirror of
https://github.com/ansible/awx.git
synced 2026-03-03 01:38:50 -03:30
move logger logic to formatter
This commit is contained in:
@@ -119,36 +119,7 @@ class APIView(views.APIView):
|
|||||||
response['X-API-Query-Count'] = len(q_times)
|
response['X-API-Query-Count'] = len(q_times)
|
||||||
response['X-API-Query-Time'] = '%0.3fs' % sum(q_times)
|
response['X-API-Query-Time'] = '%0.3fs' % sum(q_times)
|
||||||
|
|
||||||
def copy_items_try_to_numberify(d, keys):
|
analytics_logger.info("api response", extra=dict(python_objects=dict(request=request, response=response)))
|
||||||
new_d = {}
|
|
||||||
for k in keys:
|
|
||||||
val = d[k]
|
|
||||||
if val.endswith('s'):
|
|
||||||
val = val[:-1]
|
|
||||||
try:
|
|
||||||
new_d[k] = int(val)
|
|
||||||
except ValueError:
|
|
||||||
try:
|
|
||||||
new_d[k] = float(val)
|
|
||||||
except ValueError:
|
|
||||||
new_d[k] = val
|
|
||||||
|
|
||||||
return new_d
|
|
||||||
|
|
||||||
log = copy_items_try_to_numberify(response, ['X-API-Time', 'X-API-Query-Count', 'X-API-Query-Time', 'X-API-Node',])
|
|
||||||
req = {
|
|
||||||
'method': request.method,
|
|
||||||
'path': request.path,
|
|
||||||
'path_info': request.path_info,
|
|
||||||
'query_string': request.META['QUERY_STRING'],
|
|
||||||
|
|
||||||
}
|
|
||||||
if request.method == "POST":
|
|
||||||
req['post_data'] = request.POST
|
|
||||||
elif request.method == "GET":
|
|
||||||
req['get_data'] = request.GET
|
|
||||||
|
|
||||||
analytics_logger.info("api response", extra=dict(request=req, x_api=log))
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def get_authenticate_header(self, request):
|
def get_authenticate_header(self, request):
|
||||||
|
|||||||
@@ -56,6 +56,21 @@ class LogstashFormatter(LogstashFormatterVersion1):
|
|||||||
adict[name] = subdict
|
adict[name] = subdict
|
||||||
return adict
|
return adict
|
||||||
|
|
||||||
|
def convert_to_type(t, val):
|
||||||
|
if t is float:
|
||||||
|
val = val[:-1] if val.endswith('s') else val
|
||||||
|
try:
|
||||||
|
return float(val)
|
||||||
|
except ValueError:
|
||||||
|
return val
|
||||||
|
elif t is int:
|
||||||
|
try:
|
||||||
|
return int(val)
|
||||||
|
except ValueError:
|
||||||
|
return val
|
||||||
|
elif t is str:
|
||||||
|
return val
|
||||||
|
|
||||||
if kind == 'job_events':
|
if kind == 'job_events':
|
||||||
data.update(data.get('event_data', {}))
|
data.update(data.get('event_data', {}))
|
||||||
for fd in data:
|
for fd in data:
|
||||||
@@ -82,7 +97,25 @@ class LogstashFormatter(LogstashFormatterVersion1):
|
|||||||
data_for_log['facts'] = data
|
data_for_log['facts'] = data
|
||||||
data_for_log['module_name'] = module_name
|
data_for_log['module_name'] = module_name
|
||||||
elif kind == 'performance':
|
elif kind == 'performance':
|
||||||
return raw_data
|
request = raw_data['python_objects']['request']
|
||||||
|
response = raw_data['python_objects']['response']
|
||||||
|
|
||||||
|
headers = [
|
||||||
|
(float, 'X-API-Time'), # may end with an 's' "0.33s"
|
||||||
|
(int, 'X-API-Query-Count'),
|
||||||
|
(float, 'X-API-Query-Time'), # may also end with an 's'
|
||||||
|
(str, 'X-API-Node'),
|
||||||
|
]
|
||||||
|
data_for_log['x_api'] = { k: convert_to_type(t, response[k]) for (t, k) in headers }
|
||||||
|
|
||||||
|
data_for_log['request'] = {
|
||||||
|
'method': request.method,
|
||||||
|
'path': request.path,
|
||||||
|
'path_info': request.path_info,
|
||||||
|
'query_string': request.META['QUERY_STRING'],
|
||||||
|
'data': request.data,
|
||||||
|
}
|
||||||
|
|
||||||
return data_for_log
|
return data_for_log
|
||||||
|
|
||||||
def get_extra_fields(self, record):
|
def get_extra_fields(self, record):
|
||||||
|
|||||||
Reference in New Issue
Block a user