Skip to content

Commit 253707d

Browse files
authored
Merge branch 'main' into issue-1757
2 parents 3355b99 + 890e5dd commit 253707d

File tree

4 files changed

+24
-7
lines changed

4 files changed

+24
-7
lines changed

CHANGELOG.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2222
- Make ASGI request span attributes available for `start_span`.
2323
([#1762](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1762))
2424
- `opentelemetry-instrumentation-celery` Add support for anonymous tasks.
25-
([#1407](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1407)
25+
([#1407](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1407))
26+
- `opentelemetry-instrumentation-logging` Add `otelTraceSampled` to instrumetation-logging
27+
([#1773](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1773))
2628

2729

2830
### Fixed

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

+2
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

+3-2
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

+16-4
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,28 @@ 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(
103+
span_id, trace_id, trace_sampled
104+
)
100105

101106
def test_trace_context_injection_without_span(self):
102-
self.assert_trace_context_injected("0", "0")
107+
self.assert_trace_context_injected("0", "0", False)
103108

104109
@mock.patch("logging.basicConfig")
105110
def test_basic_config_called(self, basic_config_mock):
@@ -163,6 +168,7 @@ def test_log_hook(self):
163168
with self.tracer.start_as_current_span("s1") as span:
164169
span_id = format(span.get_span_context().span_id, "016x")
165170
trace_id = format(span.get_span_context().trace_id, "032x")
171+
trace_sampled = span.get_span_context().trace_flags.sampled
166172
with self.caplog.at_level(level=logging.INFO):
167173
logger = logging.getLogger("test logger")
168174
logger.info("hello")
@@ -171,6 +177,7 @@ def test_log_hook(self):
171177
self.assertEqual(record.otelSpanID, span_id)
172178
self.assertEqual(record.otelTraceID, trace_id)
173179
self.assertEqual(record.otelServiceName, "unknown_service")
180+
self.assertEqual(record.otelTraceSampled, trace_sampled)
174181
self.assertEqual(
175182
record.custom_user_attribute_from_log_hook, "some-value"
176183
)
@@ -179,14 +186,18 @@ def test_uninstrumented(self):
179186
with self.tracer.start_as_current_span("s1") as span:
180187
span_id = format(span.get_span_context().span_id, "016x")
181188
trace_id = format(span.get_span_context().trace_id, "032x")
182-
self.assert_trace_context_injected(span_id, trace_id)
189+
trace_sampled = span.get_span_context().trace_flags.sampled
190+
self.assert_trace_context_injected(
191+
span_id, trace_id, trace_sampled
192+
)
183193

184194
LoggingInstrumentor().uninstrument()
185195

186196
self.caplog.clear()
187197
with self.tracer.start_as_current_span("s1") as span:
188198
span_id = format(span.get_span_context().span_id, "016x")
189199
trace_id = format(span.get_span_context().trace_id, "032x")
200+
trace_sampled = span.get_span_context().trace_flags.sampled
190201
with self.caplog.at_level(level=logging.INFO):
191202
logger = logging.getLogger("test logger")
192203
logger.info("hello")
@@ -195,3 +206,4 @@ def test_uninstrumented(self):
195206
self.assertFalse(hasattr(record, "otelSpanID"))
196207
self.assertFalse(hasattr(record, "otelTraceID"))
197208
self.assertFalse(hasattr(record, "otelServiceName"))
209+
self.assertFalse(hasattr(record, "otelTraceSampled"))

0 commit comments

Comments
 (0)