Dela via


Felsökningsöversikt för Azure SDK för Java

Den här artikeln innehåller många felsökningsverktyg som är tillgängliga när du använder Azure SDK för Java och länkar till andra artiklar med mer information.

Azure SDK för Java består av många klientbibliotek – ett eller flera för varje Azure-tjänst som finns. Vi ser till att alla klientbibliotek är byggda enligt en konsekvent, hög standard, med vanliga mönster för konfiguration, loggning, undantagshantering och felsökning. Mer information finns i Använda Azure SDK för Java.

Eftersom felsökning kan omfatta ett så brett ämnesområde har vi utvecklat följande felsökningsguider som du kanske vill granska:

  • Felsöka problem med Azure Identity-autentisering omfattar tekniker för undersökning av autentiseringsfel, vanliga fel för autentiseringstyperna i Azure Identity Java-klientbiblioteket och åtgärdssteg för att lösa dessa fel.
  • Felsöka konflikter i beroendeversioner omfattar ämnen som rör diagnostisering, reducering och minimering av beroendekonflikter. Dessa konflikter kan uppstå när du använder Azure SDK för Java-klientbibliotek i system som har skapats med verktyg som Maven och Gradle.
  • Felsökning av nätverksproblem omfattar ämnen som rör HTTP-felsökning utanför klientbiblioteket med hjälp av verktyg som Fiddler och Wireshark.

Tillsammans med dessa allmänna felsökningsguider tillhandahåller vi även biblioteksspecifika felsökningsguider. Just nu är följande guider tillgängliga:

Utöver dessa dokument ger följande innehåll vägledning om hur du använder loggning och undantagshantering på bästa sätt när det gäller Azure SDK för Java.

Använda loggning i Azure SDK för Java

I följande avsnitt beskrivs hur du aktiverar olika typer av loggning.

Aktivera klientloggning

För att felsöka problem är det viktigt att först aktivera loggning för att övervaka programmets beteende. Felen och varningarna i loggarna ger vanligtvis användbara insikter om vad som gick fel och inkluderar ibland korrigerande åtgärder för att åtgärda problem. Azure SDK för Java har omfattande loggningsstöd. Mer information finns i Konfigurera loggning i Azure SDK för Java.

Aktivera HTTP-begäran/svarsloggning

När du felsöker problem är det bra att granska HTTP-begäranden när de skickas och tas emot mellan Azure-tjänster. Om du vill aktivera loggning av HTTP-begäran och svarsnyttolasten kan du konfigurera nästan alla Azure SDK för Java-klientbibliotek i sina klientbyggare enligt följande exempel. Var särskilt uppmärksam httpLogOptions på metoden på klientverktyget och de uppräkningsvärden som är tillgängliga i HttpLogDetailLevel.

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

Den här koden ändrar HTTP-begäran/svarsloggning för en enskild klientinstans. Du kan också konfigurera loggning av HTTP-begäranden och svar för hela programmet genom att ange AZURE_HTTP_LOG_DETAIL_LEVEL miljövariabeln till ett av värdena i följande tabell. Observera att den här ändringen möjliggör loggning för varje Azure-klient som stöder loggning av HTTP-begäran/svar.

Värde Loggningsnivå
none HTTP-begäran/svarsloggning är inaktiverad.
basic Loggar endast URL:er, HTTP-metoder och tid för att slutföra begäran.
headers Loggar allt i BASIC, plus alla begärande- och svarshuvuden.
body Loggar allt i BASIC, plus alla begärande- och svarstexter.
body_and_headers Loggar allt i HEADERS och BODY.

Kommentar

När du loggar begärande- och svarsorgan kontrollerar du att de inte innehåller konfidentiell information. När du loggar frågeparametrar och rubriker har klientbiblioteket en standarduppsättning frågeparametrar och rubriker som anses vara säkra att logga. Det är möjligt att lägga till ytterligare frågeparametrar och rubriker som är säkra att logga, som du ser i följande exempel:

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

Undantagshantering i Azure SDK för Java

De flesta Azure SDK för Java-klienttjänstmetoder genererar en HttpResponseException eller en mer specifik underklass om fel. Typen HttpResponseException innehåller ett detaljerat svarsfelobjekt som ger specifika användbara insikter om vad som gick fel och innehåller korrigerande åtgärder för att åtgärda vanliga problem. Du hittar den här felinformationen i objektets HttpResponseException meddelandeegenskap. Eftersom dessa undantag är körningsundantag anropar inte JavaDoc-referensdokumentationen dem uttryckligen.

I följande exempel visas hur du fångar det här undantaget med en synkron klient:

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
}

Med asynkrona klienter kan du fånga och hantera undantag i återanropen, som du ser i följande exempel:

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."));

Använda spårning i Azure SDK för Java

Azure SDK för Java erbjuder omfattande spårningsstöd så att du kan se körningsflödet via din programkod och de klientbibliotek som du använder. Du kan aktivera spårning i Azure-klientbibliotek med hjälp av och konfigurera OpenTelemetry SDK eller med hjälp av en OpenTelemetry-kompatibel agent. OpenTelemetry är ett populärt ramverk för observerbarhet med öppen källkod för att generera, samla in och samla in telemetridata för molnbaserad programvara.

Mer information om hur du aktiverar spårning i Azure SDK för Java finns i Konfigurera spårning i Azure SDK för Java.

Nästa steg

Om felsökningsguiden i den här artikeln inte hjälper till att lösa problem när du använder Azure SDK för Java-klientbibliotek rekommenderar vi att du skapar ett problem i Azure SDK för Java GitHub-lagringsplatsen.