Pydantic에 대한 이전 기사에서 코드 예제 중 하나로 Logfire를 소개했습니다. 이 플랫폼은 파이썬 애플리케이션에 대한 개발자들에게 통찰력을 제공하기 위해 설계된 감시 플랫폼입니다. 본 기사에서는 Logfire와 그 기능에 대해 깊이 파고들어, 추적부터 디버깅, 로깅까지의 감시 여정을 단순화할 것입니다.
Logfire는 Pydantic의 창시자들이 개발한 혁신적인 감시 플랫폼으로, 개발자들에게 파이썬 애플리케이션에 대한 강력한 통찰력을 제공하기 위해 설계되었습니다. Pydantic의 성공을 이룬 원칙을 기반으로 구축된 Logfire는 감시를 쉽게 구현하고 이해할 수 있도록 하면서 애플리케이션 동작에 대한 심층적인 통찰력을 제공하고 있습니다.
주요 기능
원활한 통합
Logfire는 기존의 파이썬 프로젝트와 원활하게 통합되어 최소한의 설정만 필요합니다. 몇 줄의 코드로 개발자들은 애플리케이션의 성능과 동작에 대한 가치 있는 데이터 수집을 시작할 수 있습니다.
Pydantic 통합
Logfire는 Pydantic 모델과 탁월한 통합을 제공합니다. 이를 통해 개발자들은 애플리케이션 전체에서 데이터 유효성 검사 및 모델 사용에 대한 전례없는 통찰력을 얻을 수 있습니다.
자동 계측
Logfire는 인기 있는 라이브러리와 프레임워크를 자동으로 계측할 수 있어 수동 로깅과 추적의 필요성을 줄입니다. 이 기능은 시간을 절약하고 애플리케이션 동작의 포괄적인 커버리지를 보장합니다.
OpenTelemetry 호환
OpenTelemetry를 기반으로 구축된 Logfire는 업계 표준과의 호환성을 보장하며 유연한 데이터 내보내기 옵션을 제공합니다.
전제 조건
- Logfire에 로그인합니다.
- 계정을 생성하기 위해 안내에 따릅니다. 이 계정은 프로젝트를 조직하는 데 도움이 됩니다.
- 조직에서 새 프로젝트를 클릭하여 첫 번째 프로젝트를 생성합니다.
시작하기
Logfire를 사용하기 위해 다음 간단한 단계를 따르세요:
단계 1. 아래 명령어로 Logfire 패키지를 설치합니다. Jupyter Notebook을 사용하는 경우 !pip install logfire
를 실행합니다.
pip install logfire
단계 2. Logfire 서비스와 인증합니다. 이는 브라우저를 열고 로그인 자격 증명을 요청합니다.
logfire auth
3. 응용 프로그램에서 Logfire를 구성합니다. 패키지가 설치되면 아래 명령어를 사용하여 Logfire를 구성해야 합니다.
import logfire
logfire.configure()
프로젝트 설정의 일부로 단계를 따를 수 있습니다:
기본 사용법
Logfire에서의 Span은 추적의 필수 구성 요소입니다. logfire.span을 사용하여 Span을 정의할 수 있습니다. 아래 예제에서 외부 Span은 주제를 설정합니다 – 사용자의 생일. 사용자는 자신의 생일에 대해 프롬프트를 받고 터미널이나 명령 프롬프트를 통해 입력된 DOB를 캡처합니다.
다음은 수동 추적을 위해 Logfire를 사용하는 간단한 예제입니다:
import logfire
from datetime import date
logfire.configure()
logfire.info('Hello, {name}!', name='world')
with logfire.span('Asking the user their {question}', question='age'):
user_input = input('How old are you [YYYY-mm-dd]? ')
dob = date.fromisoformat(user_input)
logfire.debug('{dob=} {age=!r}', dob=dob, age=date.today() - dob)
DEBUG 출력이 표시되지 않는 경우, Filter local data를 클릭하고 –> Levels –> debug를 클릭하십시오.
Pydantic 통합
이전 기사에서 논의한 대로, Pydantic의 핵심 기능은 데이터 유효성 검사입니다. Python 유형 힌트를 사용하여 데이터의 구조와 유형을 자동으로 유효성 검사합니다. Pydantic 모델을 정의할 때 각 필드는 예상되는 유형으로 주석이 달립니다. Pydantic은 이후 이러한 필드에 할당된 모든 데이터가 지정된 유형과 일치하는지 확인합니다.
Logfire와 Pydantic의 통합은 특히 강력합니다. Pydantic 모델 유효성을 기록하는 방법은 다음과 같습니다:
from datetime import date
import logfire
from pydantic import BaseModel
logfire.configure()
logfire.instrument_pydantic()
class User(BaseModel):
name: str
country_code: str
dob: date
User(name='Anne', country_code='USA', dob='2000-01-01')
User(name='Ben', country_code='USA', dob='2000-02-02')
User(name='Charlie', country_code='GBR', dob='1990-03-03')
이 구성은 Pydantic 모델 검증에 대한 세부 정보를 자동으로 기록하며, 응용 프로그램 내에서 데이터 처리에 대한 유용한 통찰력을 제공합니다.
프레임워크 통합
Logfire는 인기있는 Python 프레임워크 및 라이브러리와 통합을 제공합니다. 아래 Python 코드 예제를 위해 OpenAI API 키를 제공하고 필요한 패키지(FASTAPI, instructor, OpenAI 등)를 설치해야 합니다.
먼저, FastAPI는 개발자가 응용 프로그램 프로그래밍 인터페이스(API)를 만드는 데 도움을 주는 Python 웹 프레임워크입니다. FastAPI는 확장성, 사용 편의성 및 고성능으로 유명합니다.
Instructor는 LLMs 출력물에서 JSON과 같은 구조화된 데이터를 쉽게 추출할 수 있도록 도와주는 파이썬 패키지입니다.
다음은 Logfire를 FastAPI, OpenAI API 및 Instructor와 통합하는 예시입니다:
from fastapi import FastAPI
from openai import AsyncOpenAI
import os
import instructor
import logfire
from pydantic import BaseModel
app = FastAPI()
openai_client = AsyncOpenAI(
api_key=os.environ.get("OPENAI_API_KEY"))
logfire.configure()
logfire.instrument_pydantic()
logfire.instrument_openai(openai_client)
logfire.instrument_fastapi(app)
client = instructor.from_openai(openai_client)
class UserData(BaseModel):
query: str
class UserDetail(BaseModel):
name: str
age: int
post("/user", response_model=UserDetail) .
async def endpoint_function(data: UserData) -> UserDetail:
user_detail = await client.chat.completions.create(
model="gpt-3.5-turbo",
response_model=UserDetail,
messages=[
{"role": "user", "content": f"Extract: `{data.query}`"},
],
)
return user_detail
이 설정은 FastAPI 요청, OpenAI API 호출 및 Pydantic 모델 유효성 검사를 위한 포괄적인 로깅을 제공하여 응용 프로그램의 동작을 전체적으로 파악할 수 있습니다.
결론
Logfire는 파이썬 개발자를 위해 가시성을 쉽고 강력하게 만드는 중요한 발전을 의미합니다. Logfire는 사용 편의성과 심층적인 통찰력을 결합하여 응용 프로그램을 더 잘 이해하고 최적화할 수 있게 합니다. 작은 프로젝트나 대규모 응용 프로그램을 작업 중이더라도, Logfire는 코드 동작과 성능에 대한 가치 있는 통찰력을 얻을 수 있는 도구를 제공합니다.
좋아요와 Dev 커뮤니티와 공유해주시면 감사하겠습니다.
Source:
https://dzone.com/articles/logfire-uncomplicated-observability-for-python-app