추적 & 로깅
이 페이지의 내용
개요
이 가이드에서는 Rust 드라이버를 사용하여 애플리케이션에 대한 추적 및 로깅 을 구성하는 방법을 배울 수 있습니다. 추적과 로깅은 애플리케이션을 관찰하기 위한 두 가지 프레임워크입니다. 로깅을 사용하면 드라이버 활동에 대한 개별 이벤트 기반 로그를 볼 수 있으며, 추적을 통해 연속 보기를 수행할 수 있습니다.
Rust 드라이버에서 추적 및 로깅 기능은 크게 다르지 않습니다. 그러나 추적을 활성화하면 드라이버가 보다 구조화된 형식으로 메시지를 전송하므로 애플리케이션이 프로그래밍 방식으로 이벤트 메시지를 소비하는 것이 더 편리할 수 있습니다.
추적 프로그램과 로거는 사용자가 지정할 수 있는 심각도 또는 상세도 수준에서 메시지를 기록합니다. 애플리케이션에서 이러한 구성 요소 중 하나를 활성화하면 다양한 세부 수준에서 애플리케이션 활동에 대한 정보를 받을 수 있습니다.
팁
로깅 심각도 수준에 대해 자세히 알아보려면 메시지 로깅에 대한 Syslog 표준에 대한 Wikipedia 항목을 참조하세요.
추적 및 로깅 활성화
운전자 가 추적을 구현합니다. 운전자 가 운전자 이벤트에 대한 메시지를 내보낼 활성화 크레이트를 추가합니다.
중요
추적 상자가 불안정함
tracing
크레이트에는 1.0 버전 릴리스가 없으므로 기능이 불안정한 것으로 간주할 수 있습니다.
추적, 로깅 또는 둘 다를 활성화하려면 Cargo.toml
파일의 mongodb
종속성에 tracing
종속성과 tracing-unstable
기능 플래그를 추가해야 합니다.
[dependencies] tracing = "0.1.37" [dependencies.mongodb] version = "3.2.1" features = ["tracing-unstable"]
다음 표에서는 이벤트를 내보낼 수 있는 구성 요소와 해당 대상에 대해 설명합니다.
구성 요소 | 대상 | 설명 |
---|---|---|
명령 |
| 이벤트는 데이터베이스에 전송된 명령과 성공 또는 실패 여부를 설명합니다. |
서버 선택 |
| 이벤트는 MongoDB deployment에서 드라이버가 서버를 선택하는 프로세스를 설명합니다. |
연결 |
| 이벤트는 드라이버 연결 풀과 여기에 포함된 연결의 동작을 설명합니다. |
로깅 구성 요소와 심각도 수준을 지정하려면 애플리케이션을 컴파일하고 실행할 때 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.2.1" 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?;
2023-07-21T17:37:13.587794Z DEBUG mongodb::command: Command started topologyId="..." command="{\"insert\":\"test_coll\", ...}" databaseName="test" commandName="insert" requestId=12 driverConnectionId=1 serverConnectionId=133839 serverHost="..." serverPort=27017 2023-07-21T17:37:13.630401Z DEBUG mongodb::command: Command succeeded topologyId="..." reply="{\"n\":1, ...}" commandName="insert" requestId=12 driverConnectionId=1 serverConnectionId=133839 serverHost="..." serverPort=27017 durationMS=42
로깅 구현
로깅을 활성화하려면 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.2.1" features = ["tracing-unstable"]
팁
log
및 log-always
플래그에 대해 자세히 알아보려면 tracing
설명서를 참조하세요.
타사 로깅 크레이트 에 대해 자세히 알아보려면 env_logger
해당 문서를 참조하세요.
그런 다음 애플리케이션에서 글로벌 로거를 등록하여 로깅과 함께 이벤트를 소비해야 합니다. 다음 코드는 RUST_LOG
환경 변수의 사양을 사용하는 로거를 등록하는 방법을 보여줍니다.
env_logger::init();
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?;
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection pool created topologyId="..." serverHost="..." serverPort=27017 [2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection pool created topologyId="..." serverHost="..." serverPort=27017 [2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection pool created topologyId="..." serverHost="..." serverPort=27017 [2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection pool ready topologyId="..." serverHost="..." serverPort=27017 [2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection checkout started topologyId="..." serverHost="..." serverPort=27017 [2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection created topologyId="..." serverHost="..." serverPort=27017 driverConnectionId=1 ...
추가 정보
클라이언트 옵션 설정에 대한 자세한 내용은 연결 옵션 가이드를 참조하세요.