From 51f6c268d39659599b2aa048b65a54f8625a5a27 Mon Sep 17 00:00:00 2001 From: Jacob Beck Date: Mon, 20 Jul 2020 09:54:25 -0600 Subject: [PATCH] add environment variables for logging --- CHANGELOG.md | 5 +++++ core/dbt/logger.py | 29 +++++++++++++++++++++-------- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e324ea5774..cd4a405f4ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## dbt 0.17.2b1 (Release TBD) + +### Features +- Added environment variables for debug-level logging ([#2633](https://github.com/fishtown-analytics/dbt/issues/2633), [#2635](https://github.com/fishtown-analytics/dbt/pull/2635)) + ## dbt 0.17.1 (July 20, 2020) ## dbt 0.17.1rc4 (July 08, 2020) diff --git a/core/dbt/logger.py b/core/dbt/logger.py index a209dbad31d..c65c812d0fb 100644 --- a/core/dbt/logger.py +++ b/core/dbt/logger.py @@ -597,15 +597,28 @@ def emit(self, record: logbook.LogRecord): self.records.append(as_dict) -# we still need to use logging to suppress these or pytest captures them -logging.getLogger('botocore').setLevel(logging.ERROR) -logging.getLogger('requests').setLevel(logging.ERROR) -logging.getLogger('urllib3').setLevel(logging.ERROR) -logging.getLogger('google').setLevel(logging.ERROR) -logging.getLogger('snowflake.connector').setLevel(logging.ERROR) +def _env_log_level(var_name: str) -> int: + # convert debugging environment variable name to a log level + if dbt.flags.env_set_truthy(var_name): + return logging.DEBUG + else: + return logging.ERROR + + +LOG_LEVEL_GOOGLE = _env_log_level('DBT_GOOGLE_DEBUG_LOGGING') +LOG_LEVEL_SNOWFLAKE = _env_log_level('DBT_SNOWFLAKE_CONNECTOR_DEBUG_LOGGING') +LOG_LEVEL_BOTOCORE = _env_log_level('DBT_BOTOCORE_DEBUG_LOGGING') +LOG_LEVEL_HTTP = _env_log_level('DBT_HTTP_DEBUG_LOGGING') +LOG_LEVEL_WERKZEUG = _env_log_level('DBT_WERKZEUG_DEBUG_LOGGING') + +logging.getLogger('botocore').setLevel(LOG_LEVEL_BOTOCORE) +logging.getLogger('requests').setLevel(LOG_LEVEL_HTTP) +logging.getLogger('urllib3').setLevel(LOG_LEVEL_HTTP) +logging.getLogger('google').setLevel(LOG_LEVEL_GOOGLE) +logging.getLogger('snowflake.connector').setLevel(LOG_LEVEL_SNOWFLAKE) + logging.getLogger('parsedatetime').setLevel(logging.ERROR) -# want to see werkzeug logs about errors -logging.getLogger('werkzeug').setLevel(logging.ERROR) +logging.getLogger('werkzeug').setLevel(LOG_LEVEL_WERKZEUG) def list_handler(