Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cosmos/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
DbtTestLocalOperator,
)

logger = get_logger()
logger = get_logger(__name__)

try:
from cosmos.operators.docker import (
Expand Down
2 changes: 1 addition & 1 deletion cosmos/cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion cosmos/dbt/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
6 changes: 4 additions & 2 deletions cosmos/log.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,10 @@
"%(log_color)s%(message)s%(reset)s"
)

LOGGER_NAME_TEMPLATE = "astronomer-cosmos-{}"

def get_logger(name: str | None = None) -> logging.Logger:

def get_logger(name: str) -> logging.Logger:
Comment thread
tatiana marked this conversation as resolved.
"""
Get custom Astronomer cosmos logger.

Expand All @@ -25,7 +27,7 @@ def get_logger(name: str | None = None) -> 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)
Expand Down
15 changes: 15 additions & 0 deletions tests/test_log.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import logging

import pytest

from cosmos import get_provider_info
from cosmos.log import get_logger

Expand All @@ -14,6 +16,19 @@ 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)
Expand Down