Skip to content

Commit 2b97443

Browse files
committed
refactor: improve logger setup and integrate caching for performance
1 parent 2034786 commit 2b97443

File tree

3 files changed

+17
-11
lines changed

3 files changed

+17
-11
lines changed

source/core/__init__.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from .logger import logger
2-
from .settings import settings
1+
from .settings import logger, settings
32

43
__all__ = ["logger", "settings"]

source/core/logger.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
11
import logging
22
import sys
3+
from functools import lru_cache
34

4-
from loguru import logger
5-
6-
from .settings import settings
5+
import loguru
6+
from loguru import logger as _logger
77

88

99
class InterceptHandler(logging.Handler):
1010
def emit(self, record: logging.LogRecord) -> None:
11-
logger_opt = logger.opt(depth=7, exception=record.exc_info)
11+
logger_opt = _logger.opt(depth=7, exception=record.exc_info)
1212
logger_opt.log(record.levelname, record.getMessage())
1313

1414

15-
LOGGING_LEVEL = logging.DEBUG if settings.debug else logging.INFO
16-
logging.basicConfig(
17-
handlers=[InterceptHandler(level=LOGGING_LEVEL)], level=LOGGING_LEVEL
18-
)
19-
logger.configure(handlers=[{"sink": sys.stderr, "level": LOGGING_LEVEL}])
15+
@lru_cache()
16+
def setup_logger(debug: bool = False) -> loguru._Logger: # type: ignore
17+
LOGGING_LEVEL = logging.DEBUG if debug else logging.INFO
18+
logging.basicConfig(
19+
handlers=[InterceptHandler(level=LOGGING_LEVEL)],
20+
level=LOGGING_LEVEL,
21+
)
22+
_logger.configure(handlers=[{"sink": sys.stderr, "level": LOGGING_LEVEL}])
23+
return _logger

source/core/settings.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from pydantic import Field, field_validator
66
from pydantic_settings import BaseSettings, SettingsConfigDict
77

8+
from .logger import setup_logger
9+
810
DOTENV_PATH = ".env"
911

1012
BASE_DIR = Path(__file__).parent.parent.parent.absolute()
@@ -85,3 +87,4 @@ def set_artifacts_dir(cls, v, values):
8587

8688

8789
settings = Settings()
90+
logger = setup_logger(settings.debug)

0 commit comments

Comments
 (0)