Skip to content

Commit 4e7b905

Browse files
authored
Merge branch 'main' into fix_instrumentation_scope_encoding_to_otlp
2 parents 643c7b8 + f3b9e6e commit 4e7b905

File tree

11 files changed

+54
-31
lines changed

11 files changed

+54
-31
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
- Fix OTLP encoders missing instrumentation scope schema url and attributes
1111
([#4359](https://github.com/open-telemetry/opentelemetry-python/pull/4359))
12+
- Always setup logs sdk, OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED only controls python `logging` module handler setup
13+
([#4340](https://github.com/open-telemetry/opentelemetry-python/pull/4340))
1214
- Add `attributes` field in `metrics.get_meter` wrapper function
1315
([#4364](https://github.com/open-telemetry/opentelemetry-python/pull/4364))
1416
- Add Python 3.13 support
1517
([#4353](https://github.com/open-telemetry/opentelemetry-python/pull/4353))
18+
- sdk: don't log or print warnings when the SDK has been disabled
19+
([#4371](https://github.com/open-telemetry/opentelemetry-python/pull/4371))
1620

1721
## Version 1.29.0/0.50b0 (2024-12-11)
1822

mypy.ini

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,6 @@
1717
strict_equality = True
1818
strict_optional = True
1919
no_implicit_optional = True
20-
no_implicit_reexport = True
20+
no_implicit_reexport = True
21+
# https://mypy.readthedocs.io/en/stable/running_mypy.html#follow-imports
22+
follow_imports = silent

opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@ def _init_metrics(
236236
def _init_logging(
237237
exporters: Dict[str, Type[LogExporter]],
238238
resource: Resource = None,
239+
setup_logging_handler: bool = True,
239240
):
240241
provider = LoggerProvider(resource=resource)
241242
set_logger_provider(provider)
@@ -246,13 +247,15 @@ def _init_logging(
246247
BatchLogRecordProcessor(exporter_class(**exporter_args))
247248
)
248249

249-
handler = LoggingHandler(level=logging.NOTSET, logger_provider=provider)
250-
251-
logging.getLogger().addHandler(handler)
252-
253250
event_logger_provider = EventLoggerProvider(logger_provider=provider)
254251
set_event_logger_provider(event_logger_provider)
255252

253+
if setup_logging_handler:
254+
handler = LoggingHandler(
255+
level=logging.NOTSET, logger_provider=provider
256+
)
257+
logging.getLogger().addHandler(handler)
258+
256259

257260
def _import_exporters(
258261
trace_exporter_names: Sequence[str],
@@ -364,7 +367,7 @@ def _initialize_components(
364367
sampler: Optional[Sampler] = None,
365368
resource_attributes: Optional[Attributes] = None,
366369
id_generator: IdGenerator = None,
367-
logging_enabled: Optional[bool] = None,
370+
setup_logging_handler: Optional[bool] = None,
368371
):
369372
if trace_exporter_names is None:
370373
trace_exporter_names = []
@@ -401,17 +404,16 @@ def _initialize_components(
401404
resource=resource,
402405
)
403406
_init_metrics(metric_exporters, resource)
404-
if logging_enabled is None:
405-
logging_enabled = (
407+
if setup_logging_handler is None:
408+
setup_logging_handler = (
406409
os.getenv(
407410
_OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED, "false"
408411
)
409412
.strip()
410413
.lower()
411414
== "true"
412415
)
413-
if logging_enabled:
414-
_init_logging(log_exporters, resource)
416+
_init_logging(log_exporters, resource, setup_logging_handler)
415417

416418

417419
class _BaseConfigurator(ABC):

opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -670,7 +670,6 @@ def get_logger(
670670
attributes: Optional[Attributes] = None,
671671
) -> Logger:
672672
if self._disabled:
673-
warnings.warn("SDK is disabled.")
674673
return NoOpLogger(
675674
name,
676675
version=version,

opentelemetry-sdk/src/opentelemetry/sdk/environment_variables/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,7 @@
669669
.. envvar:: OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED
670670
671671
The :envvar:`OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED` environment variable allows users to
672-
enable/disable the logging SDK auto instrumentation.
672+
enable/disable the auto instrumentation for the python logging module.
673673
Default: False
674674
675675
Note: Logs SDK and its related settings are experimental.

opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,6 @@ def get_meter(
537537
attributes: Optional[Attributes] = None,
538538
) -> Meter:
539539
if self._disabled:
540-
_logger.warning("SDK is disabled.")
541540
return NoOpMeter(name, version=version, schema_url=schema_url)
542541

543542
if self._shutdown:

opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1228,7 +1228,6 @@ def get_tracer(
12281228
attributes: typing.Optional[types.Attributes] = None,
12291229
) -> "trace_api.Tracer":
12301230
if self._disabled:
1231-
logger.warning("SDK is disabled.")
12321231
return NoOpTracer()
12331232
if not instrumenting_module_name: # Reject empty strings too.
12341233
instrumenting_module_name = ""

opentelemetry-sdk/src/opentelemetry/sdk/util/__init__.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ class BoundedList(Sequence[_T]):
4949
@overload
5050
def __getitem__(self, s: slice) -> Sequence[_T]: ...
5151
def __len__(self) -> int: ...
52-
def append(self, item: _T): ...
53-
def extend(self, seq: Sequence[_T]): ...
52+
def append(self, item: _T) -> None: ...
53+
def extend(self, seq: Sequence[_T]) -> None: ...
5454
@classmethod
5555
def from_seq(cls, maxlen: int, seq: Iterable[_T]) -> BoundedList[_T]: ... # pylint: disable=undefined-variable
5656

opentelemetry-sdk/tests/logs/test_handler.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import logging
1616
import os
1717
import unittest
18-
import warnings
1918
from unittest.mock import Mock, patch
2019

2120
from opentelemetry._logs import NoOpLoggerProvider, SeverityNumber
@@ -290,11 +289,7 @@ def test_handler_root_logger_with_disabled_sdk_does_not_go_into_recursion_error(
290289
processor, logger = set_up_test_logging(
291290
logging.NOTSET, root_logger=True
292291
)
293-
with warnings.catch_warnings(record=True) as cw:
294-
logger.warning("hello")
295-
296-
self.assertEqual(len(cw), 1)
297-
self.assertEqual("SDK is disabled.", str(cw[0].message))
292+
logger.warning("hello")
298293

299294
self.assertEqual(processor.emit_count(), 0)
300295

opentelemetry-sdk/tests/logs/test_logs.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
# pylint: disable=protected-access
1616

1717
import unittest
18-
import warnings
1918
from unittest.mock import Mock, patch
2019

2120
from opentelemetry.sdk._logs import LoggerProvider
@@ -70,12 +69,9 @@ def test_get_logger(self):
7069

7170
@patch.dict("os.environ", {OTEL_SDK_DISABLED: "true"})
7271
def test_get_logger_with_sdk_disabled(self):
73-
with warnings.catch_warnings(record=True) as cw:
74-
logger = LoggerProvider().get_logger(Mock())
72+
logger = LoggerProvider().get_logger(Mock())
7573

7674
self.assertIsInstance(logger, NoOpLogger)
77-
self.assertEqual(len(cw), 1)
78-
self.assertEqual("SDK is disabled.", str(cw[0].message))
7975

8076
@patch.object(Resource, "create")
8177
def test_logger_provider_init(self, resource_patch):

0 commit comments

Comments
 (0)