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.
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.