Compare commits
1
Commits
0f819e649d
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7d6d298d1e |
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "utils"
|
name = "utils"
|
||||||
version = "0.1.2"
|
version = "0.1.3"
|
||||||
description = "Some hopefully useful utilities to use in everyday coding"
|
description = "Some hopefully useful utilities to use in everyday coding"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
authors = [
|
authors = [
|
||||||
|
|||||||
@@ -72,6 +72,10 @@ class LoggingSettings(BaseSettingsConfig):
|
|||||||
root_logger = logging.getLogger()
|
root_logger = logging.getLogger()
|
||||||
root_logger.setLevel(level)
|
root_logger.setLevel(level)
|
||||||
|
|
||||||
|
# Keep Uvicorn's own debug output from following the application's level.
|
||||||
|
for logger_name in ("uvicorn", "uvicorn.error", "uvicorn.access"):
|
||||||
|
logging.getLogger(logger_name).setLevel(logging.INFO)
|
||||||
|
|
||||||
# Replace and close existing handlers to avoid duplicate output and resource leaks.
|
# Replace and close existing handlers to avoid duplicate output and resource leaks.
|
||||||
for handler in root_logger.handlers[:]:
|
for handler in root_logger.handlers[:]:
|
||||||
root_logger.removeHandler(handler)
|
root_logger.removeHandler(handler)
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ from uvicorn.logging import DefaultFormatter
|
|||||||
from utils.logging_config import LoggingSettings
|
from utils.logging_config import LoggingSettings
|
||||||
|
|
||||||
SECONDS_PER_DAY = 24 * 60 * 60
|
SECONDS_PER_DAY = 24 * 60 * 60
|
||||||
|
UVICORN_LOGGER_NAMES = ("uvicorn", "uvicorn.error", "uvicorn.access")
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
@@ -20,6 +21,8 @@ def restore_root_logger() -> Generator[None]:
|
|||||||
root = logging.getLogger()
|
root = logging.getLogger()
|
||||||
old_handlers = root.handlers[:]
|
old_handlers = root.handlers[:]
|
||||||
old_level = root.level
|
old_level = root.level
|
||||||
|
uvicorn_loggers = [logging.getLogger(name) for name in UVICORN_LOGGER_NAMES]
|
||||||
|
old_uvicorn_levels = [logger.level for logger in uvicorn_loggers]
|
||||||
for handler in old_handlers:
|
for handler in old_handlers:
|
||||||
root.removeHandler(handler)
|
root.removeHandler(handler)
|
||||||
|
|
||||||
@@ -32,6 +35,8 @@ def restore_root_logger() -> Generator[None]:
|
|||||||
for handler in old_handlers:
|
for handler in old_handlers:
|
||||||
root.addHandler(handler)
|
root.addHandler(handler)
|
||||||
root.setLevel(old_level)
|
root.setLevel(old_level)
|
||||||
|
for logger, level in zip(uvicorn_loggers, old_uvicorn_levels):
|
||||||
|
logger.setLevel(level)
|
||||||
|
|
||||||
|
|
||||||
def test_sets_valid_log_level(restore_root_logger: None) -> None:
|
def test_sets_valid_log_level(restore_root_logger: None) -> None:
|
||||||
@@ -40,6 +45,16 @@ def test_sets_valid_log_level(restore_root_logger: None) -> None:
|
|||||||
assert logging.getLogger().level == logging.DEBUG
|
assert logging.getLogger().level == logging.DEBUG
|
||||||
|
|
||||||
|
|
||||||
|
def test_keeps_uvicorn_loggers_at_info_with_debug_root(
|
||||||
|
restore_root_logger: None,
|
||||||
|
) -> None:
|
||||||
|
LoggingSettings(LOG_LEVEL="DEBUG", LOG_TO_FILE=False)
|
||||||
|
|
||||||
|
assert all(
|
||||||
|
logging.getLogger(name).level == logging.INFO for name in UVICORN_LOGGER_NAMES
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_invalid_log_level_falls_back_to_info(restore_root_logger: None) -> None:
|
def test_invalid_log_level_falls_back_to_info(restore_root_logger: None) -> None:
|
||||||
with patch("utils.logging_config.logger.error") as log_error:
|
with patch("utils.logging_config.logger.error") as log_error:
|
||||||
LoggingSettings(LOG_LEVEL="NOT_A_LEVEL", LOG_TO_FILE=False)
|
LoggingSettings(LOG_LEVEL="NOT_A_LEVEL", LOG_TO_FILE=False)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
version = 1
|
version = 1
|
||||||
revision = 3
|
revision = 5
|
||||||
requires-python = ">=3.14"
|
requires-python = ">=3.14"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -751,7 +751,7 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "utils"
|
name = "utils"
|
||||||
version = "0.1.1"
|
version = "0.1.3"
|
||||||
source = { editable = "." }
|
source = { editable = "." }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "black" },
|
{ name = "black" },
|
||||||
|
|||||||
Reference in New Issue
Block a user