Skip to content

Commit 06d4b14

Browse files
committed
Add otelTraceSampled to instrumetation-logging
1 parent 19fe771 commit 06d4b14

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

instrumentation/opentelemetry-instrumentation-logging/src/opentelemetry/instrumentation/logging/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ def record_factory(*args, **kwargs):
9494

9595
record.otelSpanID = "0"
9696
record.otelTraceID = "0"
97+
record.otelTraceSampled = False
9798

9899
nonlocal service_name
99100
if service_name is None:
@@ -113,6 +114,7 @@ def record_factory(*args, **kwargs):
113114
if ctx != INVALID_SPAN_CONTEXT:
114115
record.otelSpanID = format(ctx.span_id, "016x")
115116
record.otelTraceID = format(ctx.trace_id, "032x")
117+
record.otelTraceSampled = ctx.trace_flags.sampled
116118
if callable(LoggingInstrumentor._log_hook):
117119
try:
118120
LoggingInstrumentor._log_hook( # pylint: disable=E1102

instrumentation/opentelemetry-instrumentation-logging/src/opentelemetry/instrumentation/logging/constants.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
DEFAULT_LOGGING_FORMAT = "%(asctime)s %(levelname)s [%(name)s] [%(filename)s:%(lineno)d] [trace_id=%(otelTraceID)s span_id=%(otelSpanID)s resource.service.name=%(otelServiceName)s] - %(message)s"
15+
DEFAULT_LOGGING_FORMAT = "%(asctime)s %(levelname)s [%(name)s] [%(filename)s:%(lineno)d] [trace_id=%(otelTraceID)s span_id=%(otelSpanID)s resource.service.name=%(otelServiceName)s trace_sampled=%(otelTraceSampled)s] - %(message)s"
1616

1717

1818
_MODULE_DOC = """
@@ -27,6 +27,7 @@
2727
- ``otelSpanID``
2828
- ``otelTraceID``
2929
- ``otelServiceName``
30+
- ``otelTraceSampled``
3031
3132
The integration uses the following logging format by default:
3233
@@ -113,7 +114,7 @@
113114
114115
.. code-block::
115116
116-
%(otelSpanID)s %(otelTraceID)s %(otelServiceName)s
117+
%(otelSpanID)s %(otelTraceID)s %(otelServiceName)s %(otelTraceSampled)s
117118
118119
119120

instrumentation/opentelemetry-instrumentation-logging/tests/test_logging.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ def test_trace_context_injection(self):
6262
self.assertEqual(record.otelSpanID, "0")
6363
self.assertEqual(record.otelTraceID, "0")
6464
self.assertEqual(record.otelServiceName, "")
65+
self.assertEqual(record.otelTraceSampled, False)
6566

6667

6768
def log_hook(span, record):
@@ -82,24 +83,26 @@ def tearDown(self):
8283
super().tearDown()
8384
LoggingInstrumentor().uninstrument()
8485

85-
def assert_trace_context_injected(self, span_id, trace_id):
86+
def assert_trace_context_injected(self, span_id, trace_id, trace_sampled):
8687
with self.caplog.at_level(level=logging.INFO):
8788
logger = logging.getLogger("test logger")
8889
logger.info("hello")
8990
self.assertEqual(len(self.caplog.records), 1)
9091
record = self.caplog.records[0]
9192
self.assertEqual(record.otelSpanID, span_id)
9293
self.assertEqual(record.otelTraceID, trace_id)
94+
self.assertEqual(record.otelTraceSampled, trace_sampled)
9395
self.assertEqual(record.otelServiceName, "unknown_service")
9496

9597
def test_trace_context_injection(self):
9698
with self.tracer.start_as_current_span("s1") as span:
9799
span_id = format(span.get_span_context().span_id, "016x")
98100
trace_id = format(span.get_span_context().trace_id, "032x")
99-
self.assert_trace_context_injected(span_id, trace_id)
101+
trace_sampled = span.get_span_context().trace_flags.sampled
102+
self.assert_trace_context_injected(span_id, trace_id, trace_sampled)
100103

101104
def test_trace_context_injection_without_span(self):
102-
self.assert_trace_context_injected("0", "0")
105+
self.assert_trace_context_injected("0", "0", False)
103106

104107
@mock.patch("logging.basicConfig")
105108
def test_basic_config_called(self, basic_config_mock):
@@ -163,6 +166,7 @@ def test_log_hook(self):
163166
with self.tracer.start_as_current_span("s1") as span:
164167
span_id = format(span.get_span_context().span_id, "016x")
165168
trace_id = format(span.get_span_context().trace_id, "032x")
169+
trace_sampled = span.get_span_context().trace_flags.sampled
166170
with self.caplog.at_level(level=logging.INFO):
167171
logger = logging.getLogger("test logger")
168172
logger.info("hello")
@@ -171,6 +175,7 @@ def test_log_hook(self):
171175
self.assertEqual(record.otelSpanID, span_id)
172176
self.assertEqual(record.otelTraceID, trace_id)
173177
self.assertEqual(record.otelServiceName, "unknown_service")
178+
self.assertEqual(record.otelTraceSampled, trace_sampled)
174179
self.assertEqual(
175180
record.custom_user_attribute_from_log_hook, "some-value"
176181
)
@@ -179,14 +184,16 @@ def test_uninstrumented(self):
179184
with self.tracer.start_as_current_span("s1") as span:
180185
span_id = format(span.get_span_context().span_id, "016x")
181186
trace_id = format(span.get_span_context().trace_id, "032x")
182-
self.assert_trace_context_injected(span_id, trace_id)
187+
trace_sampled = span.get_span_context().trace_flags.sampled
188+
self.assert_trace_context_injected(span_id, trace_id, trace_sampled)
183189

184190
LoggingInstrumentor().uninstrument()
185191

186192
self.caplog.clear()
187193
with self.tracer.start_as_current_span("s1") as span:
188194
span_id = format(span.get_span_context().span_id, "016x")
189195
trace_id = format(span.get_span_context().trace_id, "032x")
196+
trace_sampled = span.get_span_context().trace_flags.sampled
190197
with self.caplog.at_level(level=logging.INFO):
191198
logger = logging.getLogger("test logger")
192199
logger.info("hello")
@@ -195,3 +202,4 @@ def test_uninstrumented(self):
195202
self.assertFalse(hasattr(record, "otelSpanID"))
196203
self.assertFalse(hasattr(record, "otelTraceID"))
197204
self.assertFalse(hasattr(record, "otelServiceName"))
205+
self.assertFalse(hasattr(record, "otelTraceSampled"))

0 commit comments

Comments
 (0)