<aside>
</aside>
μλ
νμΈμ! μ§λ μκ°μλ FastAPIμ loguruλ₯Ό μ±κ³΅μ μΌλ‘ μ°λνμ£ . νμ§λ§ μμΈν 보면, λͺ¨λ μλν¬μΈνΈ ν¨μ(read_root, read_item) μμ μ°λ¦¬κ° μ§μ logger.info() μ½λλ₯Ό μμ±ν΄μΌ νμ΅λλ€. μλν¬μΈνΈκ° μλ°± κ°λΌλ©΄ μ΄λ¨κΉμ? λͺ¨λ κ³³μ λ‘κΉ
μ½λλ₯Ό 볡μ¬-λΆμ¬λ£κΈ° νλ κ²μ λΉν¨μ¨μ μ΄κ³ μ€μλ₯Ό μ λ°νκΈ° μ½μ΅λλ€. π«
μ΄λ² μ±ν°μμλ FastAPIμ κ°λ ₯ν κΈ°λ₯μΈ **'λ―Έλ€μ¨μ΄(Middleware)'**λ₯Ό μ¬μ©νμ¬ μ΄ λ¬Έμ λ₯Ό μμ£Ό μ°μνκ² ν΄κ²°ν΄ λ³΄κ² μ΅λλ€. λ―Έλ€μ¨μ΄λ λͺ¨λ μμ²μ΄ μ°λ¦¬μ APIμ λλ¬νκΈ° μ , κ·Έλ¦¬κ³ μλ΅μ΄ ν΄λΌμ΄μΈνΈμκ² λμκ°κΈ° μ§μ μ κ±°μΉλ 'μ€μ κ΄λ¬Έ'κ³Ό κ°μμ. μ΄ κ΄λ¬Έμ λ‘κ·Έ κΈ°λ‘ μ₯μΉλ₯Ό μ€μΉνμ¬ λͺ¨λ μμ²κ³Ό μλ΅μ μλμΌλ‘ κΈ°λ‘νκ³ , μΆμ μ μν **'μμ² ID(Request ID)'**κΉμ§ λΆμ¬ν΄ λ³΄κ² μ΅λλ€!
μ΄λ² μ±ν°λ₯Ό λ§μΉλ©΄ μ¬λ¬λΆμ λ€μμ ν μ μκ² λ κ±°μμ!
logger.contextualize()λ₯Ό ν΅ν΄ κ΄λ ¨λ λͺ¨λ λ‘κ·Έμ μ΄ IDλ₯Ό μ νν μ μμ΅λλ€.μ§λ μκ°μ main.py νμΌμ μμ νμ¬ λ―Έλ€μ¨μ΄ λ‘μ§μ μΆκ°νκ³ , μλν¬μΈνΈμ μλ μλ λ‘κΉ
μ½λλ₯Ό μ κ±°νμ¬ μ½λλ₯Ό λμ± κΉλνκ² λ§λλλ€.
νλ‘μ νΈ κ΅¬μ‘° (λ³κ²½ μμ)
fastapi-loguru-project/
βββ venv/
βββ requirements.txt
βββ main.py <- μ΄ νμΌμ μμ ν©λλ€!
βββ server.log
main.py μ 체 μ½λ (μμ ν)
λ―Έλ€μ¨μ΄λ μ ν리μΌμ΄μ μ 'μ€μ νκ΄'κ³Ό κ°μμ. λͺ¨λ μλ(HTTP Request)μ μ΄ νκ΄μ ν΅ν΄ λ€μ΄μ€κ³ , νκ΄μ ν΅ν΄ λκ°λλ€(HTTP Response).