Freigeben über


Übersicht über die Problembehandlung für das Azure SDK für Java

In diesem Artikel werden viele Tools zur Problembehandlung vorgestellt, die Ihnen zur Verfügung stehen, wenn Sie das Azure SDK für Java verwenden, sowie Links zu anderen Artikeln mit weiteren Details.

Das Azure SDK für Java besteht aus vielen Clientbibliotheken – eine oder mehrere für jeden azure-Dienst, der vorhanden ist. Wir stellen sicher, dass alle Clientbibliotheken auf einen konsistenten, hohen Standard mit allgemeinen Mustern für Konfiguration, Protokollierung, Ausnahmebehandlung und Problembehandlung basieren. Weitere Informationen finden Sie unter Verwenden des Azure SDK für Java.

Da die Problembehandlung einen so breiten Themenbereich umfassen kann, haben wir die folgenden Anleitungen zur Problembehandlung entwickelt, die Sie möglicherweise überprüfen möchten:

  • Behandeln von Problemen bei der Azure Identity-Authentifizierung umfasst Untersuchungstechniken bei Authentifizierungsfehlern, häufige Fehler für die Anmeldeinformationstypen in der Azure Identity Java-Clientbibliothek und Schritte zur Behebung dieser Fehler.
  • Problembehandlung bei Abhängigkeitsversionskonflikten umfasst Themen im Zusammenhang mit der Diagnose, Verringerung und Minimierung von Abhängigkeitskonflikten. Diese Konflikte können auftreten, wenn Sie das Azure SDK für Java-Clientbibliotheken in Systemen verwenden, die mit Tools wie Maven und Gradle erstellt werden.
  • Behandeln von Netzwerkproblemen deckt Themen im Zusammenhang mit HTTP-Debugging außerhalb der Clientbibliothek ab, wobei Tools wie Fiddler und Wireshark verwendet werden.

Zusammen mit diesen allgemeinen Anleitungen zur Problembehandlung stellen wir auch bibliotheksspezifische Anleitungen zur Problembehandlung bereit. Derzeit sind die folgenden Leitfäden verfügbar:

Über diese Dokumente hinaus bietet der folgende Inhalt Anleitungen zur optimalen Verwendung der Protokollierung und Ausnahmebehandlung im Zusammenhang mit dem Azure SDK für Java.

Verwenden der Protokollierung im Azure SDK für Java

In den folgenden Abschnitten wird beschrieben, wie verschiedene Arten der Protokollierung aktiviert werden.

Aktivieren der Clientprotokollierung

Um Probleme zu beheben, ist es wichtig, zuerst die Protokollierung zu aktivieren, um das Verhalten Ihrer Anwendung zu überwachen. Die Fehler und Warnungen in den Protokollen liefern in der Regel nützliche Einblicke in das, was schief gelaufen ist, und umfassen manchmal Korrekturmaßnahmen zum Beheben von Problemen. Das Azure SDK für Java verfügt über umfassende Protokollierungsunterstützung. Weitere Informationen finden Sie unter Konfigurieren der Protokollierung im Azure SDK für Java.

Aktivieren der HTTP-Anforderungs-/Antwortprotokollierung

Bei der Problembehandlung ist es hilfreich, HTTP-Anforderungen beim Senden und Empfangen zwischen Azure-Diensten zu überprüfen. Um die Protokollierung der HTTP-Anforderungs- und Antwortnutzlast zu aktivieren, können Sie fast alle Azure SDK für Java-Clientbibliotheken in ihren Client-Generatoren konfigurieren, wie im folgenden Beispiel gezeigt. Achten Sie insbesondere auf die httpLogOptions Methode für den Client-Generator und die enumerationswerten, die in HttpLogDetailLevel.

ConfigurationClient configurationClient = new ConfigurationClientBuilder()
        .connectionString(connectionString)
        .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS))
        .buildClient();

Dieser Code ändert die HTTP-Anforderungs-/Antwortprotokollierung für eine einzelne Clientinstanz. Alternativ können Sie die Protokollierung von HTTP-Anforderungen und -Antworten für die gesamte Anwendung konfigurieren, indem Sie die AZURE_HTTP_LOG_DETAIL_LEVEL Umgebungsvariable auf einen der Werte in der folgenden Tabelle festlegen. Es ist wichtig zu beachten, dass diese Änderung die Protokollierung für jeden Azure-Client ermöglicht, der die Protokollierung von HTTP-Anforderung/-Antwort unterstützt.

Wert Protokolliergrad
none Die HTTP-Anforderungs-/Antwortprotokollierung ist deaktiviert.
basic Protokolliert nur URLs, HTTP-Methoden und Zeit, um die Anforderung abzuschließen.
headers Protokolliert alles in BASIC sowie alle Anforderungs- und Antwortheader.
body Protokolliert alles in BASIC sowie den gesamten Anforderungs- und Antworttext.
body_and_headers Protokolliert alles in KOPFZEILEn und TEXTKÖRPER.

Hinweis

Wenn Sie Anforderungs- und Antworttexte protokollieren, stellen Sie sicher, dass sie keine vertraulichen Informationen enthalten. Wenn Sie Abfrageparameter und Header protokollieren, verfügt die Clientbibliothek über einen Standardsatz von Abfrageparametern und Headern, die als sicher für die Protokollierung angesehen werden. Es ist möglich, zusätzliche Abfrageparameter und Header hinzuzufügen, die sicher protokolliert werden können, wie im folgenden Beispiel gezeigt:

clientBuilder.httpLogOptions(new HttpLogOptions()
    .addAllowedHeaderName("safe-to-log-header-name")
    .addAllowedQueryParamName("safe-to-log-query-parameter-name"))

Ausnahmebehandlung im Azure SDK für Java

Die meisten Azure SDK für Java-Clientdienstmethoden lösen eine HttpResponseException oder eine spezifischere Unterklasse bei Fehlern aus. Der HttpResponseException Typ enthält ein detailliertes Antwortfehlerobjekt, das spezifische nützliche Erkenntnisse darüber liefert, was schief gelaufen ist, und enthält Korrekturmaßnahmen zur Behebung häufiger Probleme. Sie finden diese Fehlerinformationen innerhalb der Nachrichteneigenschaft des HttpResponseException Objekts. Da es sich bei diesen Ausnahmen um Laufzeitausnahmen handelt, ruft die JavaDoc-Referenzdokumentation sie nicht explizit auf.

Das folgende Beispiel zeigt, wie Sie diese Ausnahme mit einem synchronen Client abfangen:

try {
    ConfigurationSetting setting = new ConfigurationSetting().setKey("myKey").setValue("myValue");
    client.getConfigurationSetting(setting);
} catch (HttpResponseException e) {
    System.out.println(e.getMessage());
    // Do something with the exception
}

Bei asynchronen Clients können Sie Ausnahmen in den Fehlerrückrufen abfangen und behandeln, wie im folgenden Beispiel gezeigt:

ConfigurationSetting setting = new ConfigurationSetting().setKey("myKey").setValue("myValue");
asyncClient.getConfigurationSetting(setting)
    .doOnSuccess(ignored -> System.out.println("Success!"))
    .doOnError(
        error -> error instanceof ResourceNotFoundException,
        error -> System.out.println("Exception: 'getConfigurationSetting' could not be performed."));

Verwenden der Ablaufverfolgung im Azure SDK für Java

Das Azure SDK für Java bietet umfassende Unterstützung für die Ablaufverfolgung, sodass Sie den Ausführungsfluss über Ihren Anwendungscode und die von Ihnen verwendeten Clientbibliotheken sehen können. Sie können die Ablaufverfolgung in Azure-Clientbibliotheken mithilfe und Konfigurieren des OpenTelemetry SDK oder mithilfe eines mit OpenTelemetry kompatiblen Agents aktivieren. OpenTelemetry ist ein gängiges Open-Source-Ablaufverfolgungsframework zum Generieren, Erfassen und Sammeln von Telemetriedaten für cloudnative Software.

Weitere Informationen zum Aktivieren der Ablaufverfolgung im Azure SDK für Java finden Sie unter Konfigurieren der Ablaufverfolgung im Azure SDK für Java.

Nächste Schritte

Wenn die Anleitung zur Problembehandlung in diesem Artikel beim Verwenden des Azure SDK für Java-Clientbibliotheken nicht hilft, sollten Sie ein Problem im Azure SDK für Java GitHub-Repository ablegen.