2026๋…„ 7์›” 21์ผ ํ™”์š”์ผ

app/__init__.py



# app/__init__.py ๋‚ด๋ถ€ ๊ตฌ์กฐ
import logging
from pathlib import Path

from app.config import settings  # ๐Ÿ’ก ์ค‘์•™ ์ œ์–ด์‹ค์—์„œ ๋กœ๊ทธ ๊ฒฝ๋กœ ์„ค์ •์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

# [์—ฌ๊ธฐ์— ์ž‘์„ฑํ•˜์‹  ๋ฌด์–ธ๊ฐ€์˜ ์ดˆ๊ธฐํ™” ์ž‘์—…]
# print("1. app/__init__.py ์ดˆ๊ธฐํ™” ๋กœ์ง ์‹คํ–‰ ์ค‘...")

# ๋ณ€์ˆ˜๋ฅผ ์ค‘์•™ ํ†ต์ œ์‹ค ๊ฐ’์œผ๋กœ ๋ฐ”์ธ๋”ฉ
LOG_DIR = Path(settings.LOG_DIR)
LOG_FILE_PATH = LOG_DIR / settings.LOG_FILE_NAME

LOG_DIR.mkdir(parents=True, exist_ok=True)

if not LOG_FILE_PATH.exists():
  logger = logging.getLogger("uvicorn_file_logger")

  # .resolve()๋ฅผ ์“ฐ๋ฉด ๋กœ๊ทธ ํŒŒ์ผ์˜ ์‹ค์ œ fullpath๊ฐ€ ๋ฌธ์ž์—ด๋กœ ๊น”๋”ํ•˜๊ฒŒ ์ฐํž™๋‹ˆ๋‹ค.
  # print(f"์ƒˆ๋กœ์šด ๋กœ๊ทธ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. [๊ฒฝ๋กœ: {LOG_FILE_PATH.resolve()}]")

  LOG_FILE_PATH.touch()


database.py

import os from contextlib import contextmanager # contextmanager ์ž„ํฌํŠธ from typing import Generator from dotenv...