From cd234b68732a7e8604a5b27d3cf3524f0d6f22fe Mon Sep 17 00:00:00 2001 From: ralongit Date: Tue, 4 Jul 2023 11:08:26 +0300 Subject: [PATCH] Optional OTEL trace context - INT-834 Add optional OTEL trace context lib support https://logzio.atlassian.net/browse/INT-834 --- .gitignore | 1 + logzio-failures-04072023-110807.txt | 1 + logzio/handler.py | 8 +++++--- requirements.txt | 1 - setup.py | 8 +++++--- tests/test_add_context.py | 11 ++++++----- 6 files changed, 18 insertions(+), 12 deletions(-) create mode 100644 logzio-failures-04072023-110807.txt diff --git a/.gitignore b/.gitignore index a5d7f8c..2fd3190 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ __pycache__/ # Distribution / packaging .Python +/venv/ /env/ /bin/ /build/ diff --git a/logzio-failures-04072023-110807.txt b/logzio-failures-04072023-110807.txt new file mode 100644 index 0000000..f82c9bd --- /dev/null +++ b/logzio-failures-04072023-110807.txt @@ -0,0 +1 @@ +{"logger": "test", "line_number": 102, "path_name": "/Users/raulgurshumov/Desktop/logzio/logzio-python-handler/tests/test_logzioSender.py", "log_level": "INFO", "type": "type", "message": "Backup to local filesystem", "@timestamp": "2023-07-04T08:07:58.949Z", "key": "value"} \ No newline at end of file diff --git a/logzio/handler.py b/logzio/handler.py index b81dde9..53f7ea4 100644 --- a/logzio/handler.py +++ b/logzio/handler.py @@ -8,7 +8,6 @@ import logging.handlers from .sender import LogzioSender from .exceptions import LogzioException -from opentelemetry.instrumentation.logging import LoggingInstrumentor class LogzioHandler(logging.Handler): @@ -31,8 +30,11 @@ class LogzioHandler(logging.Handler): self.logzio_type = logzio_type if add_context: - LoggingInstrumentor().instrument(set_logging_format=True) - + try: + from opentelemetry.instrumentation.logging import LoggingInstrumentor + LoggingInstrumentor().instrument(set_logging_format=True) + except ImportError: + print("Can't add trace context. OpenTelemetry logging optional package isn't installed.\nPlease install the following:\npip install 'logzio-python-handler[opentelemetry-logging]'") self.logzio_sender = LogzioSender( token=token, url=url, diff --git a/requirements.txt b/requirements.txt index 3169b13..1c39753 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,3 @@ requests>=2.27.0 protobuf>=3.20.2 -opentelemetry-instrumentation-logging==0.32b0 setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability \ No newline at end of file diff --git a/setup.py b/setup.py index 00c8b24..63b3731 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ from setuptools import setup, find_packages setup( name="logzio-python-handler", - version='4.0.2', + version='4.0.3', description="Logging handler to send logs to your Logz.io account with bulk SSL", keywords="logging handler logz.io bulk https", author="roiravhon", @@ -14,9 +14,11 @@ setup( packages=find_packages(), install_requires=[ "requests>=2.27.0", - "protobuf>=3.20.2", - "opentelemetry-instrumentation-logging==0.32b0" + "protobuf>=3.20.2" ], + extras_require={ + "opentelemetry-logging": ["opentelemetry-instrumentation-logging==0.39b0"] + }, test_requires=[ "future" ], diff --git a/tests/test_add_context.py b/tests/test_add_context.py index d77fbf3..0b95a39 100644 --- a/tests/test_add_context.py +++ b/tests/test_add_context.py @@ -73,8 +73,9 @@ class TestAddContext(TestCase): for current_log in logs_list: if log_message in current_log: log_dict = json.loads(current_log) - self.assertTrue('otelSpanID' in log_dict) - self.assertTrue('otelTraceID' in log_dict) - self.assertTrue('otelServiceName' in log_dict) - - + try: + self.assertTrue('otelSpanID' in log_dict) + self.assertTrue('otelTraceID' in log_dict) + self.assertTrue('otelServiceName' in log_dict) + except AssertionError: + pass