Skip to content

Commit

Permalink
move logger onto settings, only built once
Browse files Browse the repository at this point in the history
  • Loading branch information
eriktaubeneck committed Jul 17, 2024
1 parent 875e519 commit 73c9ad1
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 33 deletions.
26 changes: 0 additions & 26 deletions sidecar/app/logger.py

This file was deleted.

4 changes: 1 addition & 3 deletions sidecar/app/query/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import loguru

from ..helpers import Role
from ..logger import get_logger
from ..settings import get_settings
from .status import Status, StatusHistory
from .step import Step
Expand Down Expand Up @@ -41,9 +40,8 @@ class Query:

def __post_init__(self):
settings = get_settings()
_logger = get_logger()

self.logger = _logger.bind(task=self.query_id)
self.logger = settings.logger.bind(task=self.query_id)
self.role = settings.role

self._status_history = StatusHistory(
Expand Down
34 changes: 30 additions & 4 deletions sidecar/app/settings.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
from __future__ import annotations

import sys
from functools import lru_cache
from pathlib import Path
from typing import Annotated, Any

import loguru
from loguru import logger
from pydantic.functional_validators import BeforeValidator
from pydantic_settings import BaseSettings

Expand All @@ -19,24 +24,45 @@ class Settings(BaseSettings):
role: Role
helper_port: int
_helpers: dict[Role, Helper]
_logger: Any # cannot use loguru.Logger here because pydantic tries to import it

def model_post_init(self, __context) -> None:
self._helpers = load_helpers_from_network_config(self.network_config_path)
self._logger = logger
self._logger.remove()
max_role_str_len = max(len(role.name) for role in Role)
role_str = f"{self.role.name.replace('_', ' ').title():>{max_role_str_len}}"

logger_format = (
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
"<level>{level: <8}</level> | "
"<blue>{extra[role]}</blue> - <level>{message}</level>"
)
self._logger.configure(extra={"role": role_str})
self._logger.add(
sys.stderr,
level="INFO",
format=logger_format,
)

@property
def logger(self) -> loguru.Logger:
return self._logger

@property
def helper(self):
def helper(self) -> Helper:
return self._helpers[self.role]

@property
def helpers(self):
def helpers(self) -> dict[Role, Helper]:
return self._helpers

@property
def status_dir_path(self):
def status_dir_path(self) -> Path:
return self.root_path / Path("status")

@property
def log_dir_path(self):
def log_dir_path(self) -> Path:
return self.root_path / Path("logs")


Expand Down

0 comments on commit 73c9ad1

Please sign in to comment.