From 31c6b3337cc93823966198e5c2e5ac81dcb426a4 Mon Sep 17 00:00:00 2001 From: Ryan Petrello Date: Thu, 23 Apr 2020 15:15:37 -0400 Subject: [PATCH] allow users to test log aggregration if `awx` isn't in the loggers list --- awx/conf/views.py | 8 +++++++- awx/main/utils/formatters.py | 12 ++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/awx/conf/views.py b/awx/conf/views.py index 1e4f33450c..107910b2b3 100644 --- a/awx/conf/views.py +++ b/awx/conf/views.py @@ -170,7 +170,13 @@ class SettingLoggingTest(GenericAPIView): return Response({'error': 'Logging not enabled'}, status=status.HTTP_409_CONFLICT) # Send test message to configured logger based on db settings - logging.getLogger('awx').error('AWX Connection Test Message') + try: + default_logger = settings.LOG_AGGREGATOR_LOGGERS[0] + if default_logger != 'awx': + default_logger = f'awx.analytics.{default_logger}' + except IndexError: + default_logger = 'awx' + logging.getLogger(default_logger).error('AWX Connection Test Message') hostname = getattr(settings, 'LOG_AGGREGATOR_HOST', None) protocol = getattr(settings, 'LOG_AGGREGATOR_PROTOCOL', None) diff --git a/awx/main/utils/formatters.py b/awx/main/utils/formatters.py index 61666f83b0..171a994435 100644 --- a/awx/main/utils/formatters.py +++ b/awx/main/utils/formatters.py @@ -127,14 +127,14 @@ class LogstashFormatter(LogstashFormatterBase): pass # best effort here, if it's not valid JSON, then meh return raw_data elif kind == 'system_tracking': - data = copy(raw_data['ansible_facts']) + data = copy(raw_data.get('ansible_facts', {})) else: data = copy(raw_data) if isinstance(data, str): data = json.loads(data) data_for_log = {} - if kind == 'job_events': + if kind == 'job_events' and raw_data.get('python_objects', {}).get('job_event'): job_event = raw_data['python_objects']['job_event'] for field_object in job_event._meta.fields: @@ -165,10 +165,10 @@ class LogstashFormatter(LogstashFormatterBase): data['ansible_python'].pop('version_info', None) data_for_log['ansible_facts'] = data - data_for_log['ansible_facts_modified'] = raw_data['ansible_facts_modified'] - data_for_log['inventory_id'] = raw_data['inventory_id'] - data_for_log['host_name'] = raw_data['host_name'] - data_for_log['job_id'] = raw_data['job_id'] + data_for_log['ansible_facts_modified'] = raw_data.get('ansible_facts_modified') + data_for_log['inventory_id'] = raw_data.get('inventory_id') + data_for_log['host_name'] = raw_data.get('host_name') + data_for_log['job_id'] = raw_data.get('job_id') elif kind == 'performance': def convert_to_type(t, val): if t is float: