summaryrefslogtreecommitdiff
path: root/src/recommendation/logger.py
diff options
context:
space:
mode:
authorSaumit <justsaumit@protonmail.com>2025-09-27 02:14:26 +0530
committerSaumit <justsaumit@protonmail.com>2025-09-27 02:14:26 +0530
commit82e03978b89938219958032efb1448cc76baa181 (patch)
tree626f3e54d52ecd49be0ed3bee30abacc0453d081 /src/recommendation/logger.py
Initial snapshot - OpenTelemetry demo 2.1.3 -f
Diffstat (limited to 'src/recommendation/logger.py')
-rw-r--r--src/recommendation/logger.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/recommendation/logger.py b/src/recommendation/logger.py
new file mode 100644
index 0000000..0569665
--- /dev/null
+++ b/src/recommendation/logger.py
@@ -0,0 +1,28 @@
+#!/usr/bin/python
+
+# Copyright The OpenTelemetry Authors
+# SPDX-License-Identifier: Apache-2.0
+
+import logging
+import sys
+from pythonjsonlogger import jsonlogger
+from opentelemetry import trace
+
+
+class CustomJsonFormatter(jsonlogger.JsonFormatter):
+ def add_fields(self, log_record, record, message_dict):
+ super(CustomJsonFormatter, self).add_fields(log_record, record, message_dict)
+ if not log_record.get('otelTraceID'):
+ log_record['otelTraceID'] = trace.format_trace_id(trace.get_current_span().get_span_context().trace_id)
+ if not log_record.get('otelSpanID'):
+ log_record['otelSpanID'] = trace.format_span_id(trace.get_current_span().get_span_context().span_id)
+
+def getJSONLogger(name):
+ logger = logging.getLogger(name)
+ handler = logging.StreamHandler(sys.stdout)
+ formatter = CustomJsonFormatter('%(asctime)s %(levelname)s [%(name)s] [%(filename)s:%(lineno)d] [trace_id=%(otelTraceID)s span_id=%(otelSpanID)s] - %(message)s')
+ handler.setFormatter(formatter)
+ logger.addHandler(handler)
+ logger.setLevel(logging.INFO)
+ logger.propagate = False
+ return logger