2323from unittest import TestCase , mock
2424from unittest .mock import Mock , patch
2525
26- import pytest
2726from pytest import raises
2827
2928from opentelemetry import trace
@@ -626,48 +625,50 @@ def tearDown(self):
626625 ]
627626
628627 def test_logging_init_empty (self ):
629- auto_resource = Resource .create (
630- {
631- "telemetry.auto.version" : "auto-version" ,
632- }
633- )
634- _init_logging ({}, resource = auto_resource )
635- self .assertEqual (self .set_provider_mock .call_count , 1 )
636- provider = self .set_provider_mock .call_args [0 ][0 ]
637- self .assertIsInstance (provider , DummyLoggerProvider )
638- self .assertIsInstance (provider .resource , Resource )
639- self .assertEqual (
640- provider .resource .attributes .get ("telemetry.auto.version" ),
641- "auto-version" ,
642- )
643- self .event_logger_provider_mock .assert_called_once_with (
644- logger_provider = provider
645- )
646- self .set_event_logger_provider_mock .assert_called_once_with (
647- self .event_logger_provider_instance_mock
648- )
628+ with ResetGlobalLoggingState ():
629+ auto_resource = Resource .create (
630+ {
631+ "telemetry.auto.version" : "auto-version" ,
632+ }
633+ )
634+ _init_logging ({}, resource = auto_resource )
635+ self .assertEqual (self .set_provider_mock .call_count , 1 )
636+ provider = self .set_provider_mock .call_args [0 ][0 ]
637+ self .assertIsInstance (provider , DummyLoggerProvider )
638+ self .assertIsInstance (provider .resource , Resource )
639+ self .assertEqual (
640+ provider .resource .attributes .get ("telemetry.auto.version" ),
641+ "auto-version" ,
642+ )
643+ self .event_logger_provider_mock .assert_called_once_with (
644+ logger_provider = provider
645+ )
646+ self .set_event_logger_provider_mock .assert_called_once_with (
647+ self .event_logger_provider_instance_mock
648+ )
649649
650650 @patch .dict (
651651 environ ,
652652 {"OTEL_RESOURCE_ATTRIBUTES" : "service.name=otlp-service" },
653653 )
654654 def test_logging_init_exporter (self ):
655- resource = Resource .create ({})
656- _init_logging ({"otlp" : DummyOTLPLogExporter }, resource = resource )
657- self .assertEqual (self .set_provider_mock .call_count , 1 )
658- provider = self .set_provider_mock .call_args [0 ][0 ]
659- self .assertIsInstance (provider , DummyLoggerProvider )
660- self .assertIsInstance (provider .resource , Resource )
661- self .assertEqual (
662- provider .resource .attributes .get ("service.name" ),
663- "otlp-service" ,
664- )
665- self .assertIsInstance (provider .processor , DummyLogRecordProcessor )
666- self .assertIsInstance (
667- provider .processor .exporter , DummyOTLPLogExporter
668- )
669- getLogger (__name__ ).error ("hello" )
670- self .assertTrue (provider .processor .exporter .export_called )
655+ with ResetGlobalLoggingState ():
656+ resource = Resource .create ({})
657+ _init_logging ({"otlp" : DummyOTLPLogExporter }, resource = resource )
658+ self .assertEqual (self .set_provider_mock .call_count , 1 )
659+ provider = self .set_provider_mock .call_args [0 ][0 ]
660+ self .assertIsInstance (provider , DummyLoggerProvider )
661+ self .assertIsInstance (provider .resource , Resource )
662+ self .assertEqual (
663+ provider .resource .attributes .get ("service.name" ),
664+ "otlp-service" ,
665+ )
666+ self .assertIsInstance (provider .processor , DummyLogRecordProcessor )
667+ self .assertIsInstance (
668+ provider .processor .exporter , DummyOTLPLogExporter
669+ )
670+ getLogger (__name__ ).error ("hello" )
671+ self .assertTrue (provider .processor .exporter .export_called )
671672
672673 @patch .dict (
673674 environ ,
@@ -846,7 +847,7 @@ def test_initialize_components_kwargs(
846847 )
847848
848849 def test_basicConfig_works_with_otel_handler (self ):
849- with ClearLoggingHandlers ():
850+ with ResetGlobalLoggingState ():
850851 _init_logging (
851852 {"otlp" : DummyOTLPLogExporter },
852853 Resource .create ({}),
@@ -868,7 +869,7 @@ def test_basicConfig_works_with_otel_handler(self):
868869 )
869870
870871 def test_basicConfig_preserves_otel_handler (self ):
871- with ClearLoggingHandlers ():
872+ with ResetGlobalLoggingState ():
872873 _init_logging (
873874 {"otlp" : DummyOTLPLogExporter },
874875 Resource .create ({}),
@@ -899,7 +900,7 @@ def test_basicConfig_preserves_otel_handler(self):
899900 )
900901
901902 def test_dictConfig_preserves_otel_handler (self ):
902- with ClearLoggingHandlers ():
903+ with ResetGlobalLoggingState ():
903904 _init_logging (
904905 {"otlp" : DummyOTLPLogExporter },
905906 Resource .create ({}),
@@ -916,22 +917,20 @@ def test_dictConfig_preserves_otel_handler(self):
916917 {
917918 "version" : 1 ,
918919 "handlers" : {
919- "default" : {
920- "level" : "INFO" ,
920+ "console" : {
921921 "class" : "logging.StreamHandler" ,
922+ "level" : "DEBUG" ,
923+ "formatter" : "simple" ,
922924 "stream" : "ext://sys.stdout" ,
923925 },
924926 },
925927 "loggers" : {
926928 "" : { # root logger
927- "handlers" : ["default" ],
928- "level" : "WARNING" ,
929- "propagate" : False ,
929+ "handlers" : ["console" ],
930930 },
931931 },
932932 }
933933 )
934- print (root .handlers )
935934 self .assertEqual (len (root .handlers ), 2 )
936935
937936 logging_handlers = [
@@ -1180,12 +1179,18 @@ def test_custom_configurator(self, mock_init_comp):
11801179 mock_init_comp .assert_called_once_with (** kwargs )
11811180
11821181
1183- class ClearLoggingHandlers :
1182+ class ResetGlobalLoggingState :
11841183 def __init__ (self ):
1184+ self .original_basic_config = logging .basicConfig
1185+ self .original_dict_config = logging .config .dictConfig
1186+ self .original_file_config = logging .config .fileConfig
11851187 self .root_logger = getLogger ()
11861188 self .original_handlers = None
11871189
11881190 def __enter__ (self ):
1191+ print (self .root_logger .handlers )
1192+ print (self .root_logger .filters )
1193+ print (self .root_logger .level )
11891194 self .original_handlers = self .root_logger .handlers [:]
11901195 self .root_logger .handlers = []
11911196 return self
@@ -1194,6 +1199,13 @@ def __exit__(self, exc_type, exc_val, exc_tb):
11941199 self .root_logger .handlers = []
11951200 for handler in self .original_handlers :
11961201 self .root_logger .addHandler (handler )
1202+ logging .basicConfig = self .original_basic_config
1203+ logging .config .dictConfig = self .original_dict_config
1204+ logging .config .fileConfig = self .original_file_config
1205+ root = getLogger ()
1206+ print (root .handlers )
1207+ print (root .filters )
1208+ print (root .level )
11971209
11981210
11991211class TestClearLoggingHandlers (TestCase ):
@@ -1205,7 +1217,7 @@ def test_preserves_handlers(self):
12051217 root_logger .addHandler (test_handler )
12061218 expected_handlers = initial_handlers + [test_handler ]
12071219
1208- with ClearLoggingHandlers ():
1220+ with ResetGlobalLoggingState ():
12091221 self .assertEqual (len (root_logger .handlers ), 0 )
12101222 temp_handler = logging .StreamHandler ()
12111223 root_logger .addHandler (temp_handler )
@@ -1216,10 +1228,14 @@ def test_preserves_handlers(self):
12161228
12171229 root_logger .removeHandler (test_handler )
12181230
1219-
1220- pytest .main (
1221- [
1222- "-x" ,
1223- "/usr/local/google/home/dylanrussell/archivist_backup_250529_133018/reinstate/opentelemetry-python/opentelemetry-sdk/tests/test_configurator.py" ,
1224- ]
1225- )
1231+ def test_preserves_original_logging_fns (self ):
1232+ def f (x ):
1233+ print ("f" )
1234+
1235+ with ResetGlobalLoggingState ():
1236+ logging .basicConfig = lambda x : print ("lambda" )
1237+ logging .config .dictConfig = f
1238+ logging .config .fileConfig = f
1239+ self .assertEqual (logging .config .dictConfig .__name__ , "dictConfig" )
1240+ self .assertEqual (logging .basicConfig .__name__ , "basicConfig" )
1241+ self .assertEqual (logging .config .fileConfig .__name__ , "fileConfig" )
0 commit comments