diff --git a/.changes/unreleased/Under the Hood-20230925-120144.yaml b/.changes/unreleased/Under the Hood-20230925-120144.yaml new file mode 100644 index 000000000..717f415f2 --- /dev/null +++ b/.changes/unreleased/Under the Hood-20230925-120144.yaml @@ -0,0 +1,6 @@ +kind: Under the Hood +body: allow for adding snowflake-python-collector logs to dbt output +time: 2023-09-25T12:01:44.778426-07:00 +custom: + Author: colin-rogers-dbt + Issue: "768" diff --git a/dbt/adapters/snowflake/connections.py b/dbt/adapters/snowflake/connections.py index 4bb00f4d8..b5fa30002 100644 --- a/dbt/adapters/snowflake/connections.py +++ b/dbt/adapters/snowflake/connections.py @@ -1,5 +1,7 @@ import base64 import datetime +import os + import pytz import re from contextlib import contextmanager @@ -47,6 +49,12 @@ logger = AdapterLogger("Snowflake") + +if os.getenv("DBT_SNOWFLAKE_CONNECTOR_DEBUG_LOGGING"): + for logger_name in ["snowflake.connector", "botocore", "boto3"]: + logger.debug(f"Setting {logger_name} to DEBUG") + logger.set_adapter_dependency_log_level(logger_name, "DEBUG") + _TOKEN_REQUEST_URL = "https://{}.snowflakecomputing.com/oauth/token-request" ERROR_REDACTION_PATTERNS = { diff --git a/tests/unit/test_connections.py b/tests/unit/test_connections.py new file mode 100644 index 000000000..87b0cf4c2 --- /dev/null +++ b/tests/unit/test_connections.py @@ -0,0 +1,25 @@ +import os +from importlib import reload +from unittest.mock import Mock +import dbt.adapters.snowflake.connections as connections +import dbt.events + + +def test_connections_sets_logs_in_response_to_env_var(monkeypatch): + """Test that setting the DBT_SNOWFLAKE_CONNECTOR_DEBUG_LOGGING environment variable happens on import""" + log_mock = Mock() + monkeypatch.setattr(dbt.events, "AdapterLogger", Mock(return_value=log_mock)) + monkeypatch.setattr(os, "environ", {"DBT_SNOWFLAKE_CONNECTOR_DEBUG_LOGGING": "true"}) + reload(connections) + + assert log_mock.debug.call_count == 3 + assert log_mock.set_adapter_dependency_log_level.call_count == 3 + + +def test_connections_does_not_set_logs_in_response_to_env_var(monkeypatch): + log_mock = Mock() + monkeypatch.setattr(dbt.events, "AdapterLogger", Mock(return_value=log_mock)) + reload(connections) + + assert log_mock.debug.call_count == 0 + assert log_mock.set_adapter_dependency_log_level.call_count == 0