Overzicht van probleemoplossing voor de Azure SDK voor Java

In dit artikel worden veel hulpprogramma's voor probleemoplossing geïntroduceerd wanneer u de Azure SDK voor Java gebruikt en koppelingen naar andere artikelen met meer informatie.

De Azure SDK voor Java bestaat uit veel clientbibliotheken: een of meer voor elke Azure service die bestaat. Microsoft zorgt ervoor dat alle clientbibliotheken zijn gebouwd op een consistente, hoge standaard, met algemene patronen voor configuratie, logboekregistratie, afhandeling van uitzonderingen en probleemoplossing. Zie De Azure SDK voor Java gebruiken voor meer informatie.

Omdat het oplossen van problemen zo'n breed onderwerp kan omvatten, Microsoft de volgende handleidingen voor probleemoplossing ontwikkeld die u mogelijk wilt bekijken:

  • Problemen met Azure Identity-verificatie oplossen omvat technieken voor verificatiefoutenonderzoek, veelvoorkomende fouten voor de referentietypen in de Azure Identity Java-clientbibliotheek en oplossingen voor deze fouten.
  • Problemen met afhankelijkheidsversieconflicten oplossen behandelt onderwerpen met betrekking tot het diagnosticeren, beperken en minimaliseren van afhankelijkheidsconflicten. Deze conflicten kunnen zich voordoen wanneer u de Azure SDK voor Java-clientbibliotheken gebruikt in systemen die zijn gebouwd met hulpprogramma's zoals Maven en Gradle.
  • Problemen met netwerken oplossen behandelt onderwerpen met betrekking tot HTTP-foutopsporing buiten de clientbibliotheek met behulp van hulpprogramma's zoals Fiddler en Wireshark.

Naast deze algemene handleidingen voor probleemoplossing biedt Microsoft ook bibliotheekspecifieke handleidingen voor probleemoplossing. Momenteel zijn de volgende handleidingen beschikbaar:

Naast deze documenten biedt de volgende inhoud richtlijnen voor het optimaal gebruik van logboekregistratie en afhandeling van uitzonderingen, omdat deze betrekking heeft op de Azure SDK voor Java.

Logboekregistratie gebruiken in de Azure SDK voor Java

In de volgende secties wordt beschreven hoe u verschillende soorten logboekregistratie inschakelt.

Clientlogboekregistratie inschakelen

Als u problemen wilt oplossen, schakelt u eerst logboekregistratie in om het gedrag van uw toepassing te bewaken. De fouten en waarschuwingen in de logboeken bieden doorgaans nuttige inzichten in wat er fout is gegaan en bevatten soms corrigerende acties om problemen op te lossen. De Azure SDK voor Java biedt uitgebreide ondersteuning voor logboekregistratie. Zie Logboekregistratie configureren in de Azure SDK voor Java voor meer informatie.

Logboekregistratie van HTTP-aanvragen/-antwoorden inschakelen

Bij het oplossen van problemen controleert u HTTP-aanvragen wanneer deze worden verzonden en ontvangen tussen Azure services. Als u logboekregistratie van de payload van HTTP-aanvragen en -antwoorden wilt inschakelen, configureert u bijna alle Azure SDK voor Java-clientbibliotheken via hun client builders, zoals in het volgende voorbeeld wordt weergegeven. Let met name op de httpLogOptions methode van de clientbouwer en de opsommingswaarden die beschikbaar zijn in HttpLogDetailLevel.

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

Deze code wijzigt de logboekregistratie van HTTP-aanvragen en -antwoorden voor één clientinstantie. U kunt ook logboekregistratie van HTTP-aanvragen en -antwoorden voor uw hele toepassing configureren door de AZURE_HTTP_LOG_DETAIL_LEVEL omgevingsvariabele in te stellen op een van de waarden in de volgende tabel. Met deze wijziging kunt u logboekregistratie inschakelen voor elke Azure-client die HTTP-aanvraag en -respons voor logboekregistratie ondersteunt.

Waarde Niveau van logboekregistratie
none Logboekregistratie van HTTP-aanvragen en -antwoorden is uitgeschakeld.
basic Registreert alleen URL's, HTTP-methoden en tijd om de aanvraag te voltooien.
headers Registreert alles in BASIC, plus alle aanvraag- en antwoordheaders.
body Registreert alles in BASIC, plus alle aanvraag- en antwoordtekst.
body_and_headers Registreert alles in HEADERS en BODY.

Opmerking

Wanneer u aanvraag- en antwoordlichamen registreert, zorg ervoor dat ze geen vertrouwelijke informatie bevatten. Wanneer u queryparameters en headers in een logboek opgeeft, heeft de clientbibliotheek een standaardset queryparameters en headers die als veilig worden beschouwd om te registreren. U kunt extra queryparameters en headers toevoegen die veilig zijn om te registreren, zoals wordt weergegeven in het volgende voorbeeld:

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

Afhandeling van uitzonderingen in de Azure SDK voor Java

De meeste methoden van Azure SDK voor Java-clientservices genereren bij een fout een HttpResponseException of een specifiekere subklasse. Het HttpResponseException type bevat een gedetailleerd antwoordfoutobject dat specifieke nuttige inzichten biedt in wat er fout is gegaan en corrigerende acties bevat om veelvoorkomende problemen op te lossen. U vindt deze foutinformatie in de berichteigenschap van het HttpResponseException object. Omdat deze uitzonderingen runtime-uitzonderingen zijn, worden deze niet expliciet aangeroepen in de JavaDoc-referentiedocumentatie.

In het volgende voorbeeld ziet u hoe u deze uitzondering kunt ondervangen met een synchrone client:

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
}

Met asynchrone clients kunt u uitzonderingen in de foutcallbacks ondervangen en afhandelen, zoals te zien is in het volgende voorbeeld.

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

Tracering gebruiken in de Azure SDK voor Java

De Azure SDK voor Java biedt uitgebreide traceringsondersteuning, zodat u de uitvoeringsstroom kunt zien via uw toepassingscode en de clientbibliotheken die u gebruikt. U kunt tracering inschakelen in Azure-clientbibliotheken met behulp van de OpenTelemetry-SDK of met behulp van een met OpenTelemetry compatibele agent. OpenTelemetry is een populair opensource-waarneembaarheidsframework voor het genereren, vastleggen en verzamelen van telemetriegegevens voor cloudeigen software.

Zie Tracering configureren in de Azure SDK voor Java voor meer informatie over het inschakelen van tracering in de Azure SDK voor Java.

Volgende stappen

Als de richtlijnen voor probleemoplossing in dit artikel niet helpen bij het oplossen van problemen wanneer u de Azure SDK voor Java clientbibliotheken gebruikt, moet u een probleem indienen in de Azure SDK voor Java GitHub opslagplaats.