File tree Expand file tree Collapse file tree
instrumentation/opentelemetry-instrumentation-logging
src/opentelemetry/instrumentation/logging Expand file tree Collapse file tree Original file line number Diff line number Diff line change 6161
6262import logging # pylint: disable=import-self
6363from os import environ
64- from typing import Collection
64+ from typing import Collection , Optional
6565
6666from opentelemetry ._logs import get_logger_provider
6767from opentelemetry .instrumentation .instrumentor import BaseInstrumentor
7878 OTEL_PYTHON_LOG_LEVEL ,
7979)
8080from opentelemetry .instrumentation .logging .handler import (
81- _get_log_level ,
8281 _setup_logging_handler ,
8382)
8483from opentelemetry .instrumentation .logging .package import _instruments
101100_logger = logging .getLogger (__name__ )
102101
103102
103+ def _get_log_level (level_name : Optional [str ]) -> Optional [int ]:
104+ if level_name is None :
105+ return None
106+ result = logging .getLevelName (level_name .upper ().strip ())
107+ if not isinstance (result , int ):
108+ _logger .warning (
109+ "Invalid log level %r for %s; defaulting to NOTSET" ,
110+ level_name ,
111+ OTEL_PYTHON_LOG_HANDLER_LEVEL ,
112+ )
113+ return logging .NOTSET
114+ return result
115+
116+
104117class LoggingInstrumentor (BaseInstrumentor ): # pylint: disable=empty-docstring
105118 __doc__ = f"""An instrumentor for stdlib logging module.
106119
Original file line number Diff line number Diff line change 3636from opentelemetry .util .types import _ExtendedAttributes
3737
3838
39- def _get_log_level (level_name : str | None ) -> int | None :
40- if level_name is None :
41- return None
42- result = logging .getLevelName (level_name .upper ().strip ())
43- return result if isinstance (result , int ) else logging .NOTSET
44-
45-
4639def _setup_logging_handler (
4740 logger_provider : LoggerProvider ,
4841 log_code_attributes : bool = False ,
Original file line number Diff line number Diff line change 2020from opentelemetry ._logs import NoOpLoggerProvider , SeverityNumber
2121from opentelemetry ._logs import get_logger as APIGetLogger
2222from opentelemetry .attributes import BoundedAttributes
23+ from opentelemetry .instrumentation .logging import _get_log_level
2324from opentelemetry .instrumentation .logging .handler import (
2425 LoggingHandler ,
25- _get_log_level ,
2626 _setup_logging_handler ,
2727)
2828from opentelemetry .sdk import trace
@@ -709,7 +709,11 @@ def test_get_log_level_error(self):
709709 self .assertEqual (_get_log_level (" eRroR" ), logging .ERROR )
710710
711711 def test_get_log_level_invalid_falls_back_to_notset (self ):
712- self .assertEqual (_get_log_level ("foobar" ), logging .NOTSET )
712+ with self .assertLogs (
713+ "opentelemetry.instrumentation.logging" , level = "WARNING"
714+ ) as cm :
715+ self .assertEqual (_get_log_level ("foobar" ), logging .NOTSET )
716+ self .assertTrue (any ("foobar" in line for line in cm .output ))
713717
714718
715719def set_up_test_logging (
You can’t perform that action at this time.
0 commit comments