68 lines
1.5 KiB
Python
68 lines
1.5 KiB
Python
import logging
|
|
from pathlib import Path
|
|
|
|
from pydantic import BaseModel, PostgresDsn
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
BASE_DIR = Path(__file__).parent.parent
|
|
|
|
|
|
class RunConfig(BaseModel):
|
|
host: str = "0.0.0.0"
|
|
port: int = 8080
|
|
reload: bool = True
|
|
|
|
|
|
class DatabaseConfig(BaseModel):
|
|
url: str
|
|
echo: bool = False
|
|
echo_pool: bool = False
|
|
pool_size: int = 50
|
|
max_overflow: int = 10
|
|
|
|
|
|
class ApiPrefix(BaseModel):
|
|
ip: str = "/api/ip"
|
|
|
|
|
|
class WebPrefix(BaseModel):
|
|
pass
|
|
|
|
|
|
class LogConfig(BaseModel):
|
|
date_format: str = "%Y-%m-%d %H:%M:%S"
|
|
log_format: str = (
|
|
"[%(asctime)s.%(msecs)03d] %(module)-15s:%(lineno)4d | %(funcName)-20s| %(levelname)-8s | %(message)s"
|
|
)
|
|
log_level: str = "INFO"
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
model_config = SettingsConfigDict(
|
|
env_file=(BASE_DIR / ".env-template", BASE_DIR / ".env"),
|
|
case_sensitive=False,
|
|
env_nested_delimiter="__",
|
|
env_prefix="BLOCKING_IP__",
|
|
)
|
|
run: RunConfig = RunConfig()
|
|
api: ApiPrefix = ApiPrefix()
|
|
web: WebPrefix = WebPrefix()
|
|
log: LogConfig = LogConfig()
|
|
db: DatabaseConfig
|
|
|
|
|
|
settings = Settings()
|
|
|
|
|
|
def config_logging(level: str) -> None:
|
|
logging.basicConfig(
|
|
level=settings.log.log_level,
|
|
datefmt=settings.log.date_format,
|
|
format=settings.log.log_format,
|
|
)
|
|
|
|
|
|
config_logging(level=settings.log.log_level)
|
|
log = logging.getLogger()
|
|
log.info("Logging initialized")
|