문서 메뉴
문서 홈
/ / /
Rust 드라이버
/

추적 & 로깅

이 페이지의 내용

  • 개요
  • 추적 및 로깅 활성화
  • 추적 구현
  • 로깅 구현
  • 추가 정보

이 가이드에서는 Rust 드라이버를 사용하여 애플리케이션에 대한 추적로깅 을 구성하는 방법을 배울 수 있습니다. 추적과 로깅은 애플리케이션을 관찰하기 위한 두 가지 프레임워크입니다. 로깅을 사용하면 드라이버 활동에 대한 개별 이벤트 기반 로그를 볼 수 있으며, 추적을 통해 연속 보기를 수행할 수 있습니다.

Rust 드라이버에서 추적 및 로깅 기능은 크게 다르지 않습니다. 그러나 추적을 활성화하면 드라이버가 보다 구조화된 형식으로 메시지를 전송하므로 애플리케이션이 프로그래밍 방식으로 이벤트 메시지를 소비하는 것이 더 편리할 수 있습니다.

추적 프로그램과 로거는 사용자가 지정할 수 있는 심각도 또는 상세도 수준에서 메시지를 기록합니다. 애플리케이션에서 이러한 구성 요소 중 하나를 활성화하면 다양한 세부 수준에서 애플리케이션 활동에 대한 정보를 받을 수 있습니다.

로깅 심각도 수준에 대해 자세히 알아보려면 메시지 로깅에 대한 Syslog 표준에 대한 Wikipedia 항목을 참조하세요.

드라이버가 추적을 구현합니다. 드라이버가 드라이버 이벤트에 대한 메시지를 내보낼 수 있도록 크레이트를 추가합니다.

중요

추적 상자가 불안정함

tracing 크레이트에는 1.0 버전 릴리스가 없으므로 기능이 불안정한 것으로 간주할 수 있습니다.

추적, 로깅 또는 둘 다를 활성화하려면 Cargo.toml 파일의 mongodb 종속성에 tracing 종속성과 tracing-unstable 기능 플래그를 추가해야 합니다.

[dependencies]
tracing = "0.1.37"
[dependencies.mongodb]
version = "3.1.0"
features = ["tracing-unstable"]

다음 표에서는 이벤트를 내보낼 수 있는 구성 요소와 해당 대상에 대해 설명합니다.

구성 요소
대상
설명
명령
mongodb::command
이벤트는 데이터베이스에 전송된 명령과 성공 또는 실패 여부를 설명합니다.
서버 선택
mongodb::server_selection
이벤트는 MongoDB deployment에서 드라이버가 서버를 선택하는 프로세스를 설명합니다.
연결
mongodb::connection
이벤트는 드라이버 연결 풀과 여기에 포함된 연결의 동작을 설명합니다.

로깅 구성 요소와 심각도 수준을 지정하려면 애플리케이션을 컴파일하고 실행할 때 RUST_LOG 환경 변수를 설정하면 됩니다. RUST_LOG 값을 앞의 표에 제공된 대상 중 하나로 설정하고 심각도 수준을 포함하여 로깅 구성 요소를 지정합니다.

다음 코드는 debug 수준에서 연결 이벤트를 기록하는 프로그램을 실행하는 명령을 보여줍니다.

$ RUST_LOG='mongodb::connection=debug' cargo run

다음 섹션에서는 추적 또는 로깅을 사용하여 이벤트를 사용하는 방법을 설명합니다.

추적을 활성화하려면 Cargo.toml 파일에 tracing-subscriber 종속성도 추가해야 합니다. 다음 코드는 드라이버 종속성과 tracing-subscriber 크레이트가 포함된 샘플 종속성 목록을 보여줍니다.

[dependencies]
tracing = "0.1.37"
tracing-subscriber = "0.3.17"
[dependencies.mongodb]
version = "3.1.0"
features = ["tracing-unstable"]

그런 다음 애플리케이션에서 tracing::Subscriber 특성을 구현하는 유형을 등록하여 추적과 함께 이벤트를 소비해야 합니다. 다음 코드는 RUST_LOG 환경 변수의 사양을 사용하는 추적 구독자를 등록하는 방법을 보여줍니다.

tracing_subscriber::fmt::init();

구독자 등록에 대해 자세히 알아보려면 tracing 설명서를 참조하세요.

애플리케이션을 실행하고 debug 수준에서 명령을 추적하는 경우 드라이버는 작업을 실행할 때마다 메시지를 내보냅니다. 다음 코드는 이 추적 사양에 대한 명령을 보여줍니다.

$ RUST_LOG='mongodb::command=debug' cargo run

debug 수준 추적이 지정된 경우, 쓰기 작업을 수행하면 드라이버가 추적 메시지를 생성합니다.

let my_coll = client.database("db").collection("test_coll");
my_coll.insert_one(doc! { "x" : 1 }).await?;

로깅을 활성화하려면 Cargo.toml 파일의 tracing 종속성에 log 또는 log-always 기능 플래그도 추가해야 합니다. 또한 env_logger 와 같은 로깅 크레이트에 대한 종속성을 추가해야 합니다.

[dependencies]
tracing = { version = "0.1.37", features = ["log"] }
env_logger = "0.10.0"
[dependencies.mongodb]
version = "3.1.0"
features = ["tracing-unstable"]

loglog-always 플래그에 대해 자세히 알아보려면 tracing 설명서를 참조하세요.

타사 로깅 크레이트 에 대해 자세히 알아보려면 env_logger 해당 문서를 참조하세요.

그런 다음 애플리케이션에서 글로벌 로거를 등록하여 로깅과 함께 이벤트를 소비해야 합니다. 다음 코드는 RUST_LOG 환경 변수의 사양을 사용하는 로거를 등록하는 방법을 보여줍니다.

env_logger::init();

대체 로깅 구성

로거를 구성하는 다른 방법의 예를 보려면 리포지토리를 env_logger Github 방문하세요.

debug 수준에서 애플리케이션을 실행하고 연결에 대해 기록하는 경우 드라이버는 연결을 열고, 사용하고, 닫을 때마다 메시지를 전송합니다. 다음 코드는 이 로깅 사양에 대한 명령을 보여줍니다.

$ RUST_LOG='mongodb::connection=debug' cargo run

debug 수준 추적이 지정된 경우, 연결을 열고 사용할 때 드라이버는 로그 메시지를 생성합니다.

let my_coll = client.database("db").collection("test_coll");
my_coll.insert_one(doc! { "x" : 1 }).await?;

클라이언트 옵션 설정에 대해 자세히 알아보려면 연결 옵션에 대한 가이드를 참조하세요.

모니터링

로깅 외에도 애플리케이션에서 모니터링을 활성화할 수 있습니다. 자세한 내용은 모니터링 가이드를 참조하세요.

돌아가기

Time Series 컬렉션

다음

명령 실행