diff --git a/slack_sdk/web/async_base_client.py b/slack_sdk/web/async_base_client.py index 22f93f518..ebb0eb3d0 100644 --- a/slack_sdk/web/async_base_client.py +++ b/slack_sdk/web/async_base_client.py @@ -88,6 +88,17 @@ def __init__( if env_variable is not None: self.proxy = env_variable + # ------------------------- + # accessors + + @property + def logger(self) -> logging.Logger: + """The logger this client uses.""" + return self._logger + + # ------------------------- + # api call + async def api_call( self, api_method: str, diff --git a/slack_sdk/web/base_client.py b/slack_sdk/web/base_client.py index f3c8f936c..6c3714a45 100644 --- a/slack_sdk/web/base_client.py +++ b/slack_sdk/web/base_client.py @@ -92,6 +92,17 @@ def __init__( if env_variable is not None: self.proxy = env_variable + # ------------------------- + # accessors + + @property + def logger(self) -> logging.Logger: + """The logger this client uses.""" + return self._logger + + # ------------------------- + # api call + def api_call( self, api_method: str, diff --git a/tests/slack_sdk/web/test_web_client_logger.py b/tests/slack_sdk/web/test_web_client_logger.py new file mode 100644 index 000000000..3a6e03398 --- /dev/null +++ b/tests/slack_sdk/web/test_web_client_logger.py @@ -0,0 +1,38 @@ +import logging +import unittest + +from slack_sdk import WebClient +from slack_sdk.web import base_client +from tests.slack_sdk.web.mock_web_api_handler import MockHandler +from tests.mock_web_api_server import setup_mock_web_api_server, cleanup_mock_web_api_server + + +class TestWebClientLogger(unittest.TestCase): + test_logger: logging.Logger + + def setUp(self): + self.test_logger = logging.Logger("test-logger") + setup_mock_web_api_server(self, MockHandler) + + def tearDown(self): + cleanup_mock_web_api_server(self) + + def test_logger_property_returns_default_logger(self): + client = WebClient(base_url="http://localhost:8888", token="xoxb-api_test") + self.assertEqual(client.logger.name, base_client.__name__) + + def test_logger_property_returns_custom_logger(self): + client = WebClient( + base_url="http://localhost:8888", + token="xoxb-api_test", + logger=self.test_logger, + ) + self.assertEqual(client.logger, self.test_logger) + + def test_logger_property_has_no_setter(self): + client = WebClient( + base_url="http://localhost:8888", + token="xoxb-api_test", + ) + with self.assertRaises(AttributeError): + client.logger = self.test_logger diff --git a/tests/slack_sdk_async/web/test_async_web_client_logger.py b/tests/slack_sdk_async/web/test_async_web_client_logger.py new file mode 100644 index 000000000..c1b7c064b --- /dev/null +++ b/tests/slack_sdk_async/web/test_async_web_client_logger.py @@ -0,0 +1,38 @@ +import logging +import unittest + +from slack_sdk.web.async_client import AsyncWebClient +from slack_sdk.web import async_base_client +from tests.slack_sdk.web.mock_web_api_handler import MockHandler +from tests.mock_web_api_server import setup_mock_web_api_server_async, cleanup_mock_web_api_server_async + + +class TestAsyncWebClientLogger(unittest.TestCase): + test_logger: logging.Logger + + def setUp(self): + self.test_logger = logging.Logger("test-logger") + setup_mock_web_api_server_async(self, MockHandler) + + def tearDown(self): + cleanup_mock_web_api_server_async(self) + + def test_logger_property_returns_default_logger(self): + client = AsyncWebClient(base_url="http://localhost:8888", token="xoxb-api_test") + self.assertEqual(client.logger.name, async_base_client.__name__) + + def test_logger_property_returns_custom_logger(self): + client = AsyncWebClient( + base_url="http://localhost:8888", + token="xoxb-api_test", + logger=self.test_logger, + ) + self.assertEqual(client.logger, self.test_logger) + + def test_logger_property_has_no_setter(self): + client = AsyncWebClient( + base_url="http://localhost:8888", + token="xoxb-api_test", + ) + with self.assertRaises(AttributeError): + client.logger = self.test_logger