|
1 | 1 | from typing import Optional |
2 | 2 |
|
3 | 3 | from dynaconf import Dynaconf |
4 | | -from loguru import logger |
5 | 4 | from pydantic import BaseModel, Field |
6 | 5 |
|
| 6 | + |
| 7 | +# We'll use a deferred logger to avoid circular imports |
| 8 | +# This will be replaced with the actual logger once it's available |
| 9 | +class DeferredLogger: |
| 10 | + def __init__(self): |
| 11 | + self.messages = [] |
| 12 | + self.real_logger = None |
| 13 | + |
| 14 | + def _log(self, level, message, *args, **kwargs): |
| 15 | + if self.real_logger: |
| 16 | + getattr(self.real_logger, level)(message, *args, **kwargs) |
| 17 | + else: |
| 18 | + self.messages.append((level, message, args, kwargs)) |
| 19 | + |
| 20 | + def info(self, message, *args, **kwargs): |
| 21 | + self._log("info", message, *args, **kwargs) |
| 22 | + |
| 23 | + def warning(self, message, *args, **kwargs): |
| 24 | + self._log("warning", message, *args, **kwargs) |
| 25 | + |
| 26 | + def error(self, message, *args, **kwargs): |
| 27 | + self._log("error", message, *args, **kwargs) |
| 28 | + |
| 29 | + def exception(self, message, *args, **kwargs): |
| 30 | + self._log("exception", message, *args, **kwargs) |
| 31 | + |
| 32 | + def debug(self, message, *args, **kwargs): |
| 33 | + self._log("debug", message, *args, **kwargs) |
| 34 | + |
| 35 | + def set_real_logger(self, _logger): |
| 36 | + self.real_logger = _logger |
| 37 | + # Replay any deferred messages |
| 38 | + for level, message, args, kwargs in self.messages: |
| 39 | + getattr(self.real_logger, level)(message, *args, **kwargs) |
| 40 | + self.messages = [] |
| 41 | + |
| 42 | + |
| 43 | +# Create a deferred logger |
| 44 | +logger = DeferredLogger() |
| 45 | + |
7 | 46 | # Load settings |
8 | 47 | settings = Dynaconf( |
9 | 48 | envvar_prefix="APP", |
@@ -35,6 +74,7 @@ class AuthenticationServiceConfig(BaseModel): |
35 | 74 | class RelationalDBConfig(BaseModel): |
36 | 75 | vendor: Optional[str] = Field("postgres", alias="VENDOR") |
37 | 76 | url: str = Field(..., alias="URL") |
| 77 | + enable_log: bool = Field(..., alias="ENABLE_LOG") |
38 | 78 | enable_auto_migrate: bool = Field(..., alias="ENABLE_AUTO_MIGRATE") |
39 | 79 |
|
40 | 80 |
|
@@ -67,6 +107,7 @@ class AppConfig(BaseModel): |
67 | 107 | RELATIONAL_DB=RelationalDBConfig( |
68 | 108 | VENDOR=settings.RELATIONAL_DB.VENDOR, |
69 | 109 | URL=settings.RELATIONAL_DB.URL, |
| 110 | + ENABLE_LOG=settings.RELATIONAL_DB.ENABLE_LOG, |
70 | 111 | ENABLE_AUTO_MIGRATE=settings.RELATIONAL_DB.ENABLE_AUTO_MIGRATE, |
71 | 112 | ), |
72 | 113 | AUTHENTICATION_SERVICE=AuthenticationServiceConfig( |
|
0 commit comments