Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Protokollierung von AWS SDK for Rust Code aktivieren
Das AWS SDK for Rust verwendet das Tracing-Framework
-
Fügen Sie in einer Befehlszeile für Ihr Projektverzeichnis die Tracing-Subscriber-Crate
als Abhängigkeit hinzu: $
cargo add tracing-subscriber --features tracing-subscriber/env-filterDadurch wird die Kiste dem
[dependencies]
Abschnitt Ihrer Datei hinzugefügt.Cargo.toml
-
Initialisieren Sie den Abonnenten. Normalerweise erfolgt dies zu Beginn der
main
Funktion, bevor ein SDK für Rust-Operationen aufgerufen wird:use aws_config::BehaviorVersion; type BoxError = Box<dyn Error + Send + Sync>; #[tokio::main] async fn main() -> Result<(), BoxError> { tracing_subscriber::fmt::init(); // Initialize the subscriber. let config = aws_config::defaults(BehaviorVersion::latest()) .load() .await; let s3 = aws_sdk_s3::Client::new(&config); let _resp = s3.list_buckets() .send() .await?; Ok(()) }
-
Schalten Sie die Protokollierung mithilfe der
RUST_LOG
Umgebungsvariablen ein. Um die Anzeige von Protokollinformationen zu aktivieren, setzen Sie in einer Befehlszeile dieRUST_LOG
Umgebungsvariable auf die Ebene, auf der Sie protokollieren möchten. Im folgenden Beispiel wird die Protokollierung auf diedebug
Stufe eingestellt: -
Führen Sie das Programm aus:
$
cargo runSie sollten zusätzliche Ausgaben in der Konsole oder im Terminalfenster sehen.
Weitere Informationen finden Sie in der tracing-subscriber
Dokumentation unter Filtern von Ereignissen mit Umgebungsvariablen
Interpretieren Sie die Protokollausgabe
Sobald Sie die Protokollierung aktiviert haben, indem Sie die Schritte im vorherigen Abschnitt ausgeführt haben, werden zusätzliche Protokollinformationen standardmäßig ausgedruckt.
Wenn Sie das standardmäßige Protokollausgabeformat (vom Protokollierungsmodul als „vollständig“ bezeichnet) verwenden, sehen die Informationen, die Sie in der Protokollausgabe sehen, in etwa so aus:
2024-06-25T16:10:12.367482Z DEBUG invoke{service=s3 operation=ListBuckets sdk_invocation_id=3434933}:try_op:try_attempt:lazy_load_identity: aws_smithy_runtime::client::identity::cache::lazy: identity cache miss occurred; added new identity (took 480.892ms) new_expiration=2024-06-25T23:07:59Z valid_for=25066.632521s partition=IdentityCachePartition(7) 2024-06-25T16:10:12.367602Z DEBUG invoke{service=s3 operation=ListBuckets sdk_invocation_id=3434933}:try_op:try_attempt: aws_smithy_runtime::client::identity::cache::lazy: loaded identity 2024-06-25T16:10:12.367643Z TRACE invoke{service=s3 operation=ListBuckets sdk_invocation_id=3434933}:try_op:try_attempt: aws_smithy_runtime::client::orchestrator::auth: resolved identity identity=Identity { data: Credentials {... }, expiration: Some(SystemTime { tv_sec: 1719356879, tv_nsec: 0 }) } 2024-06-25T16:10:12.367695Z TRACE invoke{service=s3 operation=ListBuckets sdk_invocation_id=3434933}:try_op:try_attempt: aws_smithy_runtime::client::orchestrator::auth: signing request
Jeder Eintrag beinhaltet Folgendes:
-
Der Zeitstempel des Protokolleintrags.
-
Die Protokollebene des Eintrags. Das ist ein Wort wie
INFO
DEBUG
, oderTRACE
. -
Die verschachtelte Gruppe von Bereichen,
aus denen der Protokolleintrag generiert wurde, getrennt durch Doppelpunkte („:“). Auf diese Weise können Sie die Quelle des Protokolleintrags identifizieren. -
Der Rust-Modulpfad, der den Code enthält, der den Protokolleintrag generiert hat.
-
Der Text der Protokollnachricht.
Die Standardausgabeformate des Tracing-Moduls verwenden ANSI-Escape-Codes, um die Ausgabe einzufärben. Beachten Sie diese Escape-Sequenzen, wenn Sie die Ausgabe filtern oder durchsuchen.
Anmerkung
Was innerhalb der sdk_invocation_id
verschachtelten Spans angezeigt wird, ist eine eindeutige ID, die vom SDK vom Client generiert wird, um die Korrelation von Protokollnachrichten zu erleichtern. Sie hat nichts mit der Anfrage-ID zu tun, die in der Antwort von einem gefunden wurde. AWS-Service
Optimieren Sie Ihre Protokollierungsstufen
Wenn Sie eine Kiste verwenden, die eine Umgebungsfilterung unterstützt, können Sie z. tracing_subscriber
B. die Ausführlichkeit der Protokolle nach Modulen steuern.
Sie können für jedes Modul dieselbe Protokollierungsebene aktivieren. Im Folgenden wird die Protokollierungsebene trace
für jedes Modul auf festgelegt:
$
RUST_LOG=trace
cargo run
Sie können die Protokollierung auf Trace-Ebene für ein bestimmtes Modul aktivieren. Im folgenden Beispiel werden auf Ebene nur Logs von aws_smithy_runtime
eintreffentrace
.
$
RUST_LOG=aws_smithy_runtime
=trace
Sie können für mehrere Module eine andere Protokollebene angeben, indem Sie sie durch Kommas trennen. Im folgenden Beispiel wird das aws_config
Modul auf trace
Level-Logging und das aws_smithy_runtime
Modul auf debug
Level-Logging gesetzt.
$
RUST_LOG=aws_config
=trace
,aws_smithy_runtime
=debug
cargo run
In der folgenden Tabelle werden einige der Module beschrieben, die Sie zum Filtern von Protokollnachrichten verwenden können:
Präfix | Beschreibung |
---|---|
|
Kabelprotokollierung von Anfragen und Antworten |
|
Anmeldeinformationen werden geladen |
|
Signierung von Anfragen und kanonische Anfragen |
Eine Möglichkeit, herauszufinden, welche Module Sie in Ihre Protokollausgabe aufnehmen müssen, besteht darin, zuerst alles zu protokollieren und dann den Crate-Namen für die benötigten Informationen in der Protokollausgabe zu suchen. Dann können Sie die Umgebungsvariable entsprechend setzen und Ihr Programm erneut ausführen.