1414import unittest
1515from unittest .mock import Mock , call , patch
1616
17+ from opentelemetry .sdk ._logs import LoggingHandler
1718from opentelemetry .sdk .resources import Resource
1819
1920from azure .core .tracing .ext .opentelemetry_span import OpenTelemetrySpan
@@ -351,6 +352,7 @@ def test_setup_logging(
351352 logging_handler_init_mock = Mock ()
352353 logging_handler_mock .return_value = logging_handler_init_mock
353354 logger_mock = Mock ()
355+ logger_mock .handlers = []
354356 get_logger_mock .return_value = logger_mock
355357
356358 configurations = {
@@ -373,6 +375,59 @@ def test_setup_logging(
373375 elp_mock .assert_called_once_with (lp_init_mock )
374376 set_elp_mock .assert_called_once_with (elp_init_mock )
375377
378+ @patch (
379+ "azure.monitor.opentelemetry._configure.getLogger" ,
380+ )
381+ @patch (
382+ "azure.monitor.opentelemetry._configure.BatchLogRecordProcessor" ,
383+ )
384+ @patch (
385+ "azure.monitor.opentelemetry._configure.AzureMonitorLogExporter" ,
386+ )
387+ @patch (
388+ "azure.monitor.opentelemetry._configure.set_logger_provider" ,
389+ )
390+ @patch (
391+ "azure.monitor.opentelemetry._configure.LoggerProvider" ,
392+ autospec = True ,
393+ )
394+ def test_setup_logging_duplicate_logger (
395+ self ,
396+ lp_mock ,
397+ set_logger_provider_mock ,
398+ log_exporter_mock ,
399+ blrp_mock ,
400+ get_logger_mock ,
401+ ):
402+ lp_init_mock = Mock ()
403+ lp_mock .return_value = lp_init_mock
404+ log_exp_init_mock = Mock ()
405+ log_exporter_mock .return_value = log_exp_init_mock
406+ blrp_init_mock = Mock ()
407+ blrp_mock .return_value = blrp_init_mock
408+ logging_handler_init_mock = Mock (spec = LoggingHandler )
409+ logger_mock = Mock ()
410+ logger_mock .handlers = [logging_handler_init_mock ]
411+ get_logger_mock .return_value = logger_mock
412+
413+ configurations = {
414+ "connection_string" : "test_cs" ,
415+ "logger_name" : "test" ,
416+ "resource" : TEST_RESOURCE ,
417+ }
418+ _setup_logging (configurations )
419+
420+ lp_mock .assert_called_once_with (resource = TEST_RESOURCE )
421+ set_logger_provider_mock .assert_called_once_with (lp_init_mock )
422+ log_exporter_mock .assert_called_once_with (** configurations )
423+ blrp_mock .assert_called_once_with (
424+ log_exp_init_mock ,
425+ )
426+ lp_init_mock .add_log_record_processor .assert_called_once_with (blrp_init_mock )
427+ # logging_handler_mock.assert_not_called()
428+ get_logger_mock .assert_called_once_with ("test" )
429+ logger_mock .addHandler .assert_not_called ()
430+
376431 @patch (
377432 "azure.monitor.opentelemetry._configure.PeriodicExportingMetricReader" ,
378433 )
0 commit comments