diff --git a/.gitignore b/.gitignore index 981f6bc..f5f69ba 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,6 @@ dist htmlcov/ __pychache__ .vscode +venv/ +.idea/ +*.iml diff --git a/CHANGELOG b/CHANGELOG index b1fde9e..a64cd26 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +0.15.0 +====== +- Enhanced --query argument to match against message payloads prepended with non-JSON data. + 0.14.0 ====== - New --aws-endpoint-url option to configure awslogs to use services such localstack, fakes3, etc... diff --git a/awslogs/core.py b/awslogs/core.py index c97d1b0..9bb97bd 100644 --- a/awslogs/core.py +++ b/awslogs/core.py @@ -207,12 +207,22 @@ def consumer(): ) ) + # Handle JSON payloads that might be prepended with logging info (level, timestamp, etc.) message = event['message'] + try: + message = message[message.index('{'):] + except ValueError: # Probably not JSON + pass + if self.query is not None and message[0] == '{': - parsed = json.loads(event['message']) - message = self.query_expression.search(parsed) - if not isinstance(message, str): - message = json.dumps(message) + try: + parsed = json.loads(message) + except json.decoder.JSONDecodeError: + pass + else: + message = self.query_expression.search(parsed) + if not isinstance(message, str): + message = json.dumps(message) output.append(message.rstrip()) print(' '.join(output)) diff --git a/setup.py b/setup.py index 6dc9159..d81c029 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ setup( name='awslogs', - version='0.14.0', + version='0.15.0', url='https://github.com/jorgebastida/awslogs', license='BSD', author='Jorge Bastida',