PyO3를 활용한 파이썬 모듈의 로깅 방법

파이썬 모듈을 개발하다보면 로깅이 필요한 경우가 많습니다. 로깅은 디버깅과 모듈 오류 추적을 도와주는 중요한 도구입니다. 이번 포스트에서는 PyO3를 활용한 파이썬 모듈에서 로깅을 어떻게 처리할 수 있는지 알아보겠습니다.

1. 파이썬 로깅 모듈

파이썬에는 내장된 logging 모듈이 있어 로그 기능을 손쉽게 구현할 수 있습니다. logging 모듈은 로그 메시지의 레벨을 설정할 수 있어서 오류, 디버그, 정보 등 다양한 레벨로 로그를 관리할 수 있습니다.

먼저, logging 모듈을 임포트하여 사용할 준비를 해야 합니다.

import logging

기본적으로 logging 모듈은 표준 오류 스트림에 로그를 출력하지만, 파일에 로그를 남길 수도 있습니다. 로그의 레벨은 다음과 같이 설정할 수 있습니다.

logging.basicConfig(level=logging.DEBUG)

여기서 level은 로그 레벨을 의미하며, DEBUG, INFO, WARNING, ERROR, CRITICAL 등의 값으로 설정할 수 있습니다. DEBUG 레벨은 가장 낮은 레벨로, 디버깅에 사용되는 메시지를 출력합니다.

2. PyO3를 통한 로그 출력

PyO3는 파이썬과 Rust 간의 상호 운용성을 제공하는 도구입니다. PyO3를 사용하여 파이썬 모듈을 작성할 때, 로깅을 처리하기 위해 다음과 같이 절차를 따릅니다.

2.1. PyO3에 로깅 모듈 추가

PyO3에서는 로깅 모듈을 사용하기 위해 pyo3-log 라이브러리를 추가해야 합니다. Rust Cargo.toml 파일에 다음과 같이 의존성을 추가합니다.

[dependencies]
pyo3-log = "0.1.0"

2.2. 로깅 기능 활성화

Rust 코드에서 로깅 기능을 사용하기 위해 rust_log 환경 변수를 설정해야 합니다. 예를 들어, 디버그 레벨의 로그를 출력하려면 다음과 같이 설정합니다.

export RUST_LOG=debug

2.3. 로깅 기능 구현

Rust 코드에서 로깅 기능을 구현하기 위해, log 모듈의 debug!, info!, warn!, error! 매크로를 사용할 수 있습니다. 다음은 예시입니다.

fn my_function() {
    log::debug!("This is a debug message");
    log::info!("This is an info message");
    log::warn!("This is a warning message");
    log::error!("This is an error message");
}

2.4. 로그 출력

파이썬 코드에서 PyO3로 작성된 모듈을 사용할 때, 로그를 출력할 수 있습니다. 다음은 예시입니다.

import my_module

my_module.my_function()

위의 예시에서 my_function() 함수가 호출됨과 동시에 Rust 코드에서 작성된 로그가 출력됩니다.

3. 결론

이번 포스트에서는 PyO3를 활용하여 파이썬 모듈에서 로깅하는 방법을 알아보았습니다. 파이썬 내장 로깅 모듈과 PyO3의 로그 기능을 조합하여 효과적인 로그 관리를 할 수 있습니다.

로그를 통해 모듈의 동작 상황을 추적하고, 오류를 신속하게 해결할 수 있으므로 로깅을 잘 활용하여 모듈 개발을 진행해보세요.

참고: 파이썬 logging 모듈 문서 , PyO3 GitHub 저장소

#PyO3 #로깅