Skip to content
Draft
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,11 @@ can cause a deadlock to occur over `logging._lock` in some cases ([#4636](https:

- typecheck: add sdk/resources and drop mypy
([#4578](https://github.com/open-telemetry/opentelemetry-python/pull/4578))
- Refactor `BatchLogRecordProcessor` to simplify code and make the control flow more
clear ([#4562](https://github.com/open-telemetry/opentelemetry-python/pull/4562/)
and [#4535](https://github.com/open-telemetry/opentelemetry-python/pull/4535)).
- Enable configuration of logging format and level in auto-instrumentation
([#4203](https://github.com/open-telemetry/opentelemetry-python/pull/4203))
- Use PEP702 for marking deprecations
([#4522](https://github.com/open-telemetry/opentelemetry-python/pull/4522))
- Refactor `BatchLogRecordProcessor` and `BatchSpanProcessor` to simplify code
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL,
OTEL_EXPORTER_OTLP_PROTOCOL,
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL,
OTEL_PYTHON_LOG_FORMAT,
OTEL_PYTHON_LOG_HANDLER_LEVEL,
OTEL_PYTHON_TRACER_CONFIGURATOR,
OTEL_TRACES_SAMPLER,
OTEL_TRACES_SAMPLER_ARG,
Expand Down Expand Up @@ -101,6 +103,15 @@

_OTEL_SAMPLER_ENTRY_POINT_GROUP = "opentelemetry_traces_sampler"

_OTEL_PYTHON_LOG_HANDLER_LEVEL_BY_NAME = {
"notset": logging.NOTSET,
"debug": logging.DEBUG,
"info": logging.INFO,
"warn": logging.WARNING,
"warning": logging.WARNING,
"error": logging.ERROR,
}

_logger = logging.getLogger(__name__)

ExporterArgsMap = Mapping[
Expand Down Expand Up @@ -167,6 +178,13 @@ def _get_id_generator() -> str:
return environ.get(OTEL_PYTHON_ID_GENERATOR, _DEFAULT_ID_GENERATOR)


def _get_log_level() -> int:
return _OTEL_PYTHON_LOG_HANDLER_LEVEL_BY_NAME.get(
environ.get(OTEL_PYTHON_LOG_HANDLER_LEVEL, "notset").lower().strip(),
logging.NOTSET,
)


def _get_tracer_configurator() -> str | None:
return environ.get(OTEL_PYTHON_TRACER_CONFIGURATOR, None)

Expand Down Expand Up @@ -330,6 +348,15 @@ def _init_logging(
handler = LoggingHandler(
level=logging.NOTSET, logger_provider=provider
)
# Log level
if OTEL_PYTHON_LOG_HANDLER_LEVEL in environ:
handler.setLevel(_get_log_level())
# Log format
if OTEL_PYTHON_LOG_FORMAT in environ:
log_format = environ.get(
OTEL_PYTHON_LOG_FORMAT, logging.BASIC_FORMAT
)
handler.setFormatter(logging.Formatter(log_format))
logging.getLogger().addHandler(handler)
_overwrite_logging_config_fns(handler)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,22 @@
Default: "info"
"""

OTEL_PYTHON_LOG_FORMAT = "OTEL_PYTHON_LOG_FORMAT"
"""
.. envvar:: OTEL_PYTHON_LOG_FORMAT

The :envvar:`OTEL_PYTHON_LOG_FORMAT` environment variable sets the log format for the OpenTelemetry LoggingHandler's Formatter
Default: "logging.BASIC_FORMAT"
"""

OTEL_PYTHON_LOG_HANDLER_LEVEL = "OTEL_PYTHON_LOG_HANDLER_LEVEL"
"""
.. envvar:: OTEL_PYTHON_LOG_HANDLER_LEVEL

The :envvar:`OTEL_PYTHON_LOG_HANDLER_LEVEL` environment variable sets the log level for the OpenTelemetry LoggingHandler
Default: "logging.NOTSET"
"""

OTEL_TRACES_SAMPLER = "OTEL_TRACES_SAMPLER"
"""
.. envvar:: OTEL_TRACES_SAMPLER
Expand Down
Loading
Loading