Docs Menu
Docs Home
/ / /
Rust ドライバー
/

トレースとロギング

項目一覧

  • Overview
  • トレースとログの有効化
  • トレース機能の実装
  • ログを実装する
  • 詳細情報

このガイドでは、Rust ドライバーを使用してアプリケーションのトレースログを設定する方法を学習できます。 トレースとロギングは、アプリケーションを観察するための 2 つのフレームワークです。 ログ記録 では、ドライバーのアクティビティの個別のイベントベースのログを表示できますが、トレースでは継続的なビューが提供されます。

Rust ドライバーでは、トレースとログの機能は大きな違いはありません。 ただし、トレース機能を有効にすると、ドライバーはより構造化された形式でメッセージを出力するため、アプリケーションはイベント メッセージをプログラム的に消費するのが容易になります。

トレースとロガーは、指定可能な重大度または冗長レベルでメッセージをログに記録します。 アプリケーション内でこれらのコンポーネントのいずれかを有効にすると、アプリケーションのアクティビティに関する情報をさまざまな詳細レベルで受け取ることができます。

Tip

ロギング重大度レベルの詳細については、メッセージ ロギング用の Syslog 標準に関する Wikipedia のエントリを参照してください。

ドライバー は crate ドライバーがドライバー イベントのメッセージを発行できるようにします。

重要

Crate は不安定

tracing crate には 1.0 のバージョン リリースがないため、機能は不安定であると考えられます。

トレース、ロギング、またはその両方を有効にするには、 tracing依存関係とtracing-unstable機能フラグをCargo.tomlファイルのmongodb依存関係に追加する必要があります。

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

次の表では、イベントを発行できるコンポーネントとそれに対応するターゲットについて説明します。

コンポーネント
ターゲット
説明
コマンド
mongodb::command
イベントは、データベースに送信されたコマンドと、その成功または失敗を記述します。
サーバーの選択
mongodb::server_selection
イベントは、MongoDB 配置でサーバーを選択するドライバーのプロセスを記述します。
接続
mongodb::connection
イベントは、ドライバー接続プールとそれに含まれる接続の動作を記述します。

ロギング コンポーネントと重大度レベルを指定するには、アプリケーションをコンパイルして実行するときにRUST_LOG環境変数を設定できます。 ロギング コンポーネントを指定するには、 RUST_LOGの値を前の表に記載されているターゲットの 1 つに設定し、重大度レベルを含めます。

次のコードは、 debugレベルで接続イベントを記録するプログラムを実行するコマンドを示しています。

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

次のセクションでは、トレースまたはログのいずれかを使用してイベントを消費する方法について説明します。

トレースを有効にするには、 Cargo.tomlファイルにtracing-subscriberの依存関係も追加する必要があります。 次のコードは、ドライバーの依存関係とtracing-subscriber crate を含むサンプルの依存関係リストを示しています。

[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();

Tip

サブスクライブの登録の詳細については、 の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.1.0"
features = ["tracing-unstable"]

Tip

loglog-always フラグの詳細については、 のtracing ドキュメントを参照してください。

サードパーティのログ記録クレートenv_logger の詳細については、その ドキュメントを参照してください。

次に、アプリケーション内で、ログ記録のあるイベントを消費するために グローバル ロガー を登録する必要があります。 次のコードは、 RUST_LOG環境変数の仕様を使用するロガーを登録する方法を示しています。

env_logger::init();

Tip

代替のログ構成

ロガーを構成する他の方法の例については、env_loggerGithub リポジトリ をご覧ください。

アプリケーションを実行し、 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
...

クライアント オプションの設定の詳細については、 接続オプション に関するガイドを参照してください。

Tip

モニタリング

ロギングに加えて、アプリケーション内でモニタリングを有効にすることができます。 詳しくは、「監視ガイド 」を参照してください。

戻る

時系列コレクション