From 272e6ee87531301a36ab700933014b6729f5472a Mon Sep 17 00:00:00 2001 From: glebkrapivin Date: Mon, 17 Jun 2024 16:34:24 +0200 Subject: [PATCH 1/4] Made name of the logger required --- cosmos/__init__.py | 2 +- cosmos/cache.py | 2 +- cosmos/dbt/project.py | 2 +- cosmos/log.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cosmos/__init__.py b/cosmos/__init__.py index 100649bfbe..555f97e064 100644 --- a/cosmos/__init__.py +++ b/cosmos/__init__.py @@ -30,7 +30,7 @@ DbtTestLocalOperator, ) -logger = get_logger() +logger = get_logger(__name__) try: from cosmos.operators.docker import ( diff --git a/cosmos/cache.py b/cosmos/cache.py index 1e0b341f07..563c4fd703 100644 --- a/cosmos/cache.py +++ b/cosmos/cache.py @@ -12,7 +12,7 @@ from cosmos.dbt.project import get_partial_parse_path from cosmos.log import get_logger -logger = get_logger() +logger = get_logger(__name__) # It was considered to create a cache identifier based on the dbt project path, as opposed diff --git a/cosmos/dbt/project.py b/cosmos/dbt/project.py index d8750cd442..987d10f3a6 100644 --- a/cosmos/dbt/project.py +++ b/cosmos/dbt/project.py @@ -13,7 +13,7 @@ ) from cosmos.log import get_logger -logger = get_logger() +logger = get_logger(__name__) def has_non_empty_dependencies_file(project_path: Path) -> bool: diff --git a/cosmos/log.py b/cosmos/log.py index 3294ac5b7c..90e1f32d0c 100644 --- a/cosmos/log.py +++ b/cosmos/log.py @@ -15,7 +15,7 @@ ) -def get_logger(name: str | None = None) -> logging.Logger: +def get_logger(name: str) -> logging.Logger: """ Get custom Astronomer cosmos logger. From cfe8069ca8e733da99ecf0443a518e3faf0fea8e Mon Sep 17 00:00:00 2001 From: glebkrapivin Date: Mon, 17 Jun 2024 17:32:48 +0200 Subject: [PATCH 2/4] AAdded logger template --- cosmos/log.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cosmos/log.py b/cosmos/log.py index 90e1f32d0c..3522b09dd0 100644 --- a/cosmos/log.py +++ b/cosmos/log.py @@ -14,6 +14,8 @@ "%(log_color)s%(message)s%(reset)s" ) +LOGGER_NAME_TEMPLATE = "astronomer-cosmos-{}" + def get_logger(name: str) -> logging.Logger: """ @@ -25,7 +27,7 @@ def get_logger(name: str) -> logging.Logger: By using this logger, we introduce a (yellow) astronomer-cosmos string into the project's log messages: [2023-08-09T14:20:55.532+0100] {subprocess.py:94} INFO - (astronomer-cosmos) - 13:20:55 Completed successfully """ - logger = logging.getLogger(name) + logger = logging.getLogger(LOGGER_NAME_TEMPLATE.format(name)) formatter: logging.Formatter = CustomTTYColoredFormatter(fmt=LOG_FORMAT) # type: ignore handler = logging.StreamHandler() handler.setFormatter(formatter) From a64735b70a9f1b3d485db602ba486aee2d472cef Mon Sep 17 00:00:00 2001 From: glebkrapivin Date: Tue, 18 Jun 2024 13:08:15 +0200 Subject: [PATCH 3/4] added tests --- tests/test_log.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/test_log.py b/tests/test_log.py index 75676d1ec6..aa1cf3616d 100644 --- a/tests/test_log.py +++ b/tests/test_log.py @@ -1,9 +1,12 @@ import logging +import pytest + from cosmos import get_provider_info from cosmos.log import get_logger + def test_get_logger(): custom_string = "%(purple)s(astronomer-cosmos)%(reset)s" standard_logger = logging.getLogger() @@ -14,6 +17,18 @@ def test_get_logger(): assert custom_logger.handlers[0].formatter.__class__.__name__ == "CustomTTYColoredFormatter" assert custom_string in custom_logger.handlers[0].formatter._fmt + with pytest.raises(TypeError): + # Ensure that the get_logger signature is not changed in the future + # and name is still a required parameter + custom_logger = get_logger() # noqa + + # Explicitly ensure that even if we pass None or empty string + # we will not get root logger in any case + custom_logger = get_logger('') + assert custom_logger.name != '' + + custom_logger = get_logger(None) # noqa + assert custom_logger.name != '' def test_propagate_logs_conf(monkeypatch): monkeypatch.setattr("cosmos.log.propagate_logs", False) From 3311c80007e5ceddb0148a96ddc174713ee6eacd Mon Sep 17 00:00:00 2001 From: glebkrapivin Date: Tue, 18 Jun 2024 13:09:39 +0200 Subject: [PATCH 4/4] black --- tests/test_log.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/test_log.py b/tests/test_log.py index aa1cf3616d..c4f8b4bc11 100644 --- a/tests/test_log.py +++ b/tests/test_log.py @@ -6,7 +6,6 @@ from cosmos.log import get_logger - def test_get_logger(): custom_string = "%(purple)s(astronomer-cosmos)%(reset)s" standard_logger = logging.getLogger() @@ -20,15 +19,16 @@ def test_get_logger(): with pytest.raises(TypeError): # Ensure that the get_logger signature is not changed in the future # and name is still a required parameter - custom_logger = get_logger() # noqa + custom_logger = get_logger() # noqa # Explicitly ensure that even if we pass None or empty string # we will not get root logger in any case - custom_logger = get_logger('') - assert custom_logger.name != '' + custom_logger = get_logger("") + assert custom_logger.name != "" + + custom_logger = get_logger(None) # noqa + assert custom_logger.name != "" - custom_logger = get_logger(None) # noqa - assert custom_logger.name != '' def test_propagate_logs_conf(monkeypatch): monkeypatch.setattr("cosmos.log.propagate_logs", False)