summaryrefslogtreecommitdiff
path: root/src/recommendation/logger.py
diff options
context:
space:
mode:
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