이 텍스트는 소스 코드를 수정하지 않고 Python 프로그램을 관찰하고 추적하는 "wrapture" 도구를 사용하는 방법을 설명합니다. 초기에는 추적이 프로그램의 진입점을 편집하는 것을 포함했는데, 이는 상속받거나 공유된 코드의 경우 바람직하지 않습니다. 더 유연한 접근 방식은 별도의 설정 파일인 wrapture.toml을 사용하여 무엇을 관찰할지, 추적 데이터를 어디로 보낼지 지정하는 것입니다. 이 설정 파일은 관찰 대상과 해당 메서드, 그리고 데이터 마스킹 규칙을 정의합니다.wrapture.toml 파일은 모듈 내에서 특정 메서드 이름이나 glob 패턴을 대상으로 지정할 수 있습니다. 이 도구는 python -m wrapture 뒤에 프로그램 스크립트를 붙여 실행하며, 이는 프로그램을 실행하기 전에 설정을 적용합니다. 이 방법은 소스 코드 수정 방식과 동일한 추적 출력을 생성하지만, 관찰 로직을 외부에 유지합니다. 장시간 실행되는 애플리케이션의 경우, 추적 출력을 JSON Lines 형식의 파일(예: trace.jsonl)로 보낼 수 있습니다.이 파일 형식은 인자, 결과, 예외 및 타이밍을 포함한 상세한 이벤트 정보를 캡처하여 jq와 같은 일반적인 도구로 쉽게 처리할 수 있습니다. 추적을 활성 상태로 두는 것에 대한 안전 고려 사항에는 차단 방지를 위한 제한된 큐와 라이브 객체 보유를 피하기 위한 인자 요약이 포함됩니다. 명령줄 직접 실행이 불가능한 경우, 환경 변수를 통해 인터프리터 시작 시 wrapture를 주입하기 위해 autowrapt를 사용할 수 있습니다.이 부트스트랩 메커니즘은 일반적으로 프로덕션 환경이 아닌 개발 또는 디버깅을 위한 것입니다. 추적이 주입되면, 애플리케이션을 다시 시작하지 않고도 wrapture.bootstrap을 통해 접근 가능한 기능을 사용하여 동적으로 제어(일시 중지 및 재개 또는 완전히 되돌리기)할 수 있습니다. wrapture의 다음 단계는 웹 애플리케이션에서 발견되는 것과 같은 더 복잡한 애플리케이션 단위에 이 추적 기능을 적용하는 것을 포함합니다.
wrapture.toml을 사용하여 무엇을 관찰할지, 추적 데이터를 어디로 보낼지 지정하는 것입니다. 이 설정 파일은 관찰 대상과 해당 메서드, 그리고 데이터 마스킹 규칙을 정의합니다.wrapture.toml파일은 모듈 내에서 특정 메서드 이름이나 glob 패턴을 대상으로 지정할 수 있습니다. 이 도구는python -m wrapture뒤에 프로그램 스크립트를 붙여 실행하며, 이는 프로그램을 실행하기 전에 설정을 적용합니다. 이 방법은 소스 코드 수정 방식과 동일한 추적 출력을 생성하지만, 관찰 로직을 외부에 유지합니다. 장시간 실행되는 애플리케이션의 경우, 추적 출력을 JSON Lines 형식의 파일(예:trace.jsonl)로 보낼 수 있습니다.이 파일 형식은 인자, 결과, 예외 및 타이밍을 포함한 상세한 이벤트 정보를 캡처하여jq와 같은 일반적인 도구로 쉽게 처리할 수 있습니다. 추적을 활성 상태로 두는 것에 대한 안전 고려 사항에는 차단 방지를 위한 제한된 큐와 라이브 객체 보유를 피하기 위한 인자 요약이 포함됩니다. 명령줄 직접 실행이 불가능한 경우, 환경 변수를 통해 인터프리터 시작 시 wrapture를 주입하기 위해autowrapt를 사용할 수 있습니다.이 부트스트랩 메커니즘은 일반적으로 프로덕션 환경이 아닌 개발 또는 디버깅을 위한 것입니다. 추적이 주입되면, 애플리케이션을 다시 시작하지 않고도wrapture.bootstrap을 통해 접근 가능한 기능을 사용하여 동적으로 제어(일시 중지 및 재개 또는 완전히 되돌리기)할 수 있습니다. wrapture의 다음 단계는 웹 애플리케이션에서 발견되는 것과 같은 더 복잡한 애플리케이션 단위에 이 추적 기능을 적용하는 것을 포함합니다.