Delen via


Overzicht van probleemoplossing voor de Azure SDK voor Java

In dit artikel worden veel hulpprogramma's voor probleemoplossing geïntroduceerd die voor u beschikbaar zijn 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. We zorgen 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 probleemoplossing zo'n breed onderwerp kan omvatten, hebben we 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 bieden we ook bibliotheekspecifieke handleidingen voor probleemoplossing. Op dit moment 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.

Logboekregistratie op de client inschakelen

Als u problemen wilt oplossen, is het belangrijk om eerst logboekregistratie in te schakelen om het gedrag van uw toepassing te controleren. 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 is het handig om HTTP-aanvragen te controleren wanneer ze worden verzonden en ontvangen tussen Azure-services. Als u logboekregistratie van de HTTP-aanvraag en -nettolading wilt inschakelen, kunt u bijna alle Azure SDK voor Java-clientbibliotheken configureren in hun clientbouwers, zoals wordt weergegeven in het volgende voorbeeld. 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();

Met deze code wordt de logboekregistratie van http-aanvragen/antwoorden voor één clientexemplaren gewijzigd. U kunt ook HTTP-aanvragen en -antwoorden voor logboekregistratie 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. Het is belangrijk om te weten dat met deze wijziging logboekregistratie mogelijk is voor elke Azure-client die HTTP-aanvraag/-antwoordregistratie ondersteunt.

Weergegeven als Niveau van logboekregistratie
none Logboekregistratie van HTTP-aanvragen/-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.

Notitie

Wanneer u aanvraag- en antwoordteksten aanmeldt, moet u ervoor zorgen dat deze 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. Het is mogelijk om extra queryparameters en headers toe te voegen 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 Azure SDK voor Java-clientservicemethoden gooien een HttpResponseException of een meer specifieke subklasse op fouten. 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 callbacks voor fouten ondervangen en afhandelen, zoals wordt weergegeven 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, raden we u aan een probleem op te slaan in de Azure SDK voor Java GitHub-opslagplaats.