1818
1919import logging
2020import logging .config
21- from logging import WARNING , getLogger
2221from logging import (
2322 DEBUG ,
2423 ERROR ,
@@ -833,7 +832,7 @@ def test_logging_init_custom_log_record_processors(self):
833832 environ ,
834833 {
835834 "OTEL_RESOURCE_ATTRIBUTES" : "service.name=otlp-service" ,
836- "OTEL_PYTHON_LOG_LEVEL " : "CUSTOM_LOG_LEVEL" ,
835+ "OTEL_PYTHON_LOG_HANDLER_LEVEL " : "CUSTOM_LOG_LEVEL" ,
837836 },
838837 )
839838 @patch ("opentelemetry.sdk._configuration._get_log_level" , return_value = 39 )
@@ -842,7 +841,6 @@ def test_logging_init_exporter_level_under(self, log_level_mock):
842841 _init_logging (
843842 {"otlp" : DummyOTLPLogExporter },
844843 resource = resource ,
845- setup_logging_handler = False ,
846844 )
847845 self .assertEqual (self .set_provider_mock .call_count , 1 )
848846 provider = self .set_provider_mock .call_args [0 ][0 ]
@@ -852,12 +850,13 @@ def test_logging_init_exporter_level_under(self, log_level_mock):
852850 provider .resource .attributes .get ("service.name" ),
853851 "otlp-service" ,
854852 )
855- self .assertIsInstance (provider .processor , DummyLogRecordProcessor )
853+ self .assertEqual (len (provider .processors ), 1 )
854+ self .assertIsInstance (provider .processors [0 ], DummyLogRecordProcessor )
856855 self .assertIsInstance (
857- provider .processor .exporter , DummyOTLPLogExporter
856+ provider .processors [ 0 ] .exporter , DummyOTLPLogExporter
858857 )
859858 getLogger (__name__ ).error ("hello" )
860- self .assertFalse (provider .processor .exporter .export_called )
859+ self .assertTrue (provider .processors [ 0 ] .exporter .export_called )
861860 root_logger = getLogger ()
862861 self .assertEqual (root_logger .level , WARNING )
863862 handler_present = False
@@ -871,12 +870,12 @@ def test_logging_init_exporter_level_under(self, log_level_mock):
871870 environ ,
872871 {
873872 "OTEL_RESOURCE_ATTRIBUTES" : "service.name=otlp-service" ,
874- "OTEL_PYTHON_LOG_LEVEL " : "CUSTOM_LOG_LEVEL" ,
873+ "OTEL_PYTHON_LOG_HANDLER_LEVEL " : "CUSTOM_LOG_LEVEL" ,
875874 },
876875 clear = True ,
877876 )
878- @patch ("opentelemetry.sdk._configuration._get_log_level" , return_value = 39 )
879- def test_logging_init_exporter_level_under (self , log_level_mock ):
877+ @patch ("opentelemetry.sdk._configuration._get_log_level" , return_value = 41 )
878+ def test_logging_init_exporter_level_over (self , log_level_mock ):
880879 resource = Resource .create ({})
881880 _init_logging (
882881 {"otlp" : DummyOTLPLogExporter },
@@ -890,26 +889,25 @@ def test_logging_init_exporter_level_under(self, log_level_mock):
890889 provider .resource .attributes .get ("service.name" ),
891890 "otlp-service" ,
892891 )
893- self .assertIsInstance (provider .processor , DummyLogRecordProcessor )
892+ self .assertEqual (len (provider .processors ), 1 )
893+ self .assertIsInstance (provider .processors [0 ], DummyLogRecordProcessor )
894894 self .assertIsInstance (
895- provider .processor .exporter , DummyOTLPLogExporter
895+ provider .processors [ 0 ] .exporter , DummyOTLPLogExporter
896896 )
897897 getLogger (__name__ ).error ("hello" )
898- self .assertFalse (provider .processor .exporter .export_called )
898+ self .assertFalse (provider .processors [ 0 ] .exporter .export_called )
899899 root_logger = getLogger ()
900900 handler_present = False
901901 for handler in root_logger .handlers :
902902 if isinstance (handler , LoggingHandler ):
903903 handler_present = True
904- self .assertEqual (handler .level , 39 )
904+ self .assertEqual (handler .level , 41 )
905905 self .assertTrue (handler_present )
906906
907907 @patch .dict (
908908 environ ,
909909 {
910910 "OTEL_RESOURCE_ATTRIBUTES" : "service.name=otlp-service" ,
911- "OTEL_PYTHON_LOG_LEVEL" : "CUSTOM_LOG_LEVEL" ,
912- "OTEL_PYTHON_LOG_HANDLER_LEVEL" : "CUSTOM_LOG_LEVEL" ,
913911 "OTEL_PYTHON_LOG_FORMAT" : CUSTOM_LOG_FORMAT ,
914912 },
915913 )
@@ -927,12 +925,13 @@ def test_logging_init_exporter_format(self):
927925 provider .resource .attributes .get ("service.name" ),
928926 "otlp-service" ,
929927 )
930- self .assertIsInstance (provider .processor , DummyLogRecordProcessor )
928+ self .assertEqual (len (provider .processors ), 1 )
929+ self .assertIsInstance (provider .processors [0 ], DummyLogRecordProcessor )
931930 self .assertIsInstance (
932- provider .processor .exporter , DummyOTLPLogExporter
931+ provider .processors [ 0 ] .exporter , DummyOTLPLogExporter
933932 )
934933 getLogger (__name__ ).error ("hello" )
935- self .assertFalse (provider .processor .exporter .export_called )
934+ self .assertTrue (provider .processors [ 0 ] .exporter .export_called )
936935 root_logger = getLogger ()
937936 self .assertEqual (root_logger .level , WARNING )
938937 handler_present = False
@@ -984,31 +983,45 @@ def test_logging_init_exporter_without_handler_setup(self):
984983 def test_otel_log_level_by_name_default (self ):
985984 self .assertEqual (_get_log_level (), NOTSET )
986985
987- @patch .dict (environ , {"OTEL_PYTHON_LOG_LEVEL" : "NOTSET " }, clear = True )
986+ @patch .dict (
987+ environ , {"OTEL_PYTHON_LOG_HANDLER_LEVEL" : "NOTSET " }, clear = True
988+ )
988989 def test_otel_log_level_by_name_notset (self ):
989990 self .assertEqual (_get_log_level (), NOTSET )
990991
991- @patch .dict (environ , {"OTEL_PYTHON_LOG_LEVEL" : " DeBug " }, clear = True )
992+ @patch .dict (
993+ environ , {"OTEL_PYTHON_LOG_HANDLER_LEVEL" : " DeBug " }, clear = True
994+ )
992995 def test_otel_log_level_by_name_debug (self ):
993996 self .assertEqual (_get_log_level (), DEBUG )
994997
995- @patch .dict (environ , {"OTEL_PYTHON_LOG_LEVEL" : " info " }, clear = True )
998+ @patch .dict (
999+ environ , {"OTEL_PYTHON_LOG_HANDLER_LEVEL" : " info " }, clear = True
1000+ )
9961001 def test_otel_log_level_by_name_info (self ):
9971002 self .assertEqual (_get_log_level (), INFO )
9981003
999- @patch .dict (environ , {"OTEL_PYTHON_LOG_LEVEL" : " warn" }, clear = True )
1004+ @patch .dict (
1005+ environ , {"OTEL_PYTHON_LOG_HANDLER_LEVEL" : " warn" }, clear = True
1006+ )
10001007 def test_otel_log_level_by_name_warn (self ):
10011008 self .assertEqual (_get_log_level (), WARNING )
10021009
1003- @patch .dict (environ , {"OTEL_PYTHON_LOG_LEVEL" : " warnING " }, clear = True )
1010+ @patch .dict (
1011+ environ , {"OTEL_PYTHON_LOG_HANDLER_LEVEL" : " warnING " }, clear = True
1012+ )
10041013 def test_otel_log_level_by_name_warning (self ):
10051014 self .assertEqual (_get_log_level (), WARNING )
10061015
1007- @patch .dict (environ , {"OTEL_PYTHON_LOG_LEVEL" : " eRroR" }, clear = True )
1016+ @patch .dict (
1017+ environ , {"OTEL_PYTHON_LOG_HANDLER_LEVEL" : " eRroR" }, clear = True
1018+ )
10081019 def test_otel_log_level_by_name_error (self ):
10091020 self .assertEqual (_get_log_level (), ERROR )
10101021
1011- @patch .dict (environ , {"OTEL_PYTHON_LOG_LEVEL" : "foobar" }, clear = True )
1022+ @patch .dict (
1023+ environ , {"OTEL_PYTHON_LOG_HANDLER_LEVEL" : "foobar" }, clear = True
1024+ )
10121025 def test_otel_log_level_by_name_invalid (self ):
10131026 self .assertEqual (_get_log_level (), NOTSET )
10141027
@@ -1340,60 +1353,6 @@ def test_dictConfig_preserves_otel_handler(self):
13401353 "Should still have exactly one OpenTelemetry LoggingHandler" ,
13411354 )
13421355
1343- def test_basicConfig_works_with_otel_handler (self ):
1344- with ClearLoggingHandlers ():
1345- _init_logging (
1346- {"otlp" : DummyOTLPLogExporter },
1347- Resource .create ({}),
1348- setup_logging_handler = True ,
1349- )
1350-
1351- logging .basicConfig (level = logging .INFO )
1352-
1353- root_logger = logging .getLogger ()
1354- stream_handlers = [
1355- h
1356- for h in root_logger .handlers
1357- if isinstance (h , logging .StreamHandler )
1358- ]
1359- self .assertEqual (
1360- len (stream_handlers ),
1361- 1 ,
1362- "basicConfig should add a StreamHandler even when OTel handler exists" ,
1363- )
1364-
1365- def test_basicConfig_preserves_otel_handler (self ):
1366- with ClearLoggingHandlers ():
1367- _init_logging (
1368- {"otlp" : DummyOTLPLogExporter },
1369- Resource .create ({}),
1370- setup_logging_handler = True ,
1371- )
1372-
1373- root_logger = logging .getLogger ()
1374- self .assertEqual (
1375- len (root_logger .handlers ),
1376- 1 ,
1377- "Should be exactly one OpenTelemetry LoggingHandler" ,
1378- )
1379- handler = root_logger .handlers [0 ]
1380- self .assertIsInstance (handler , LoggingHandler )
1381-
1382- logging .basicConfig ()
1383-
1384- self .assertGreater (len (root_logger .handlers ), 1 )
1385-
1386- logging_handlers = [
1387- h
1388- for h in root_logger .handlers
1389- if isinstance (h , LoggingHandler )
1390- ]
1391- self .assertEqual (
1392- len (logging_handlers ),
1393- 1 ,
1394- "Should still have exactly one OpenTelemetry LoggingHandler" ,
1395- )
1396-
13971356
13981357class TestMetricsInit (TestCase ):
13991358 def setUp (self ):
@@ -1671,7 +1630,7 @@ def __exit__(self, exc_type, exc_val, exc_tb):
16711630 logging .config .fileConfig = self .original_file_config
16721631
16731632
1674- class TestClearLoggingHandlers (TestCase ):
1633+ class TestResetGlobalLoggingState (TestCase ):
16751634 def test_preserves_handlers (self ):
16761635 root_logger = getLogger ()
16771636 initial_handlers = root_logger .handlers [:]
0 commit comments