Java için Azure SDK'sı için sorun gidermeye genel bakış

Bu makalede, Java için Azure SDK kullandığınızda kullanılabilecek birçok sorun giderme aracı ve daha fazla ayrıntı içeren diğer makalelere bağlantılar sunulmaktadır.

Java için Azure SDK, var olan her Azure hizmeti için bir veya daha fazla istemci kitaplığından oluşur. Microsoft, tüm istemci kitaplıklarının yapılandırma, günlüğe kaydetme, özel durum işleme ve sorun giderme için ortak kalıplar kullanılarak tutarlı ve yüksek bir standartta oluşturulmasını sağlar. Daha fazla bilgi için bkz. Java için Azure SDK'yı kullanma.

Sorun giderme bu kadar geniş bir konu alanına yayılabildiği için Microsoft gözden geçirmek isteyebileceğiniz aşağıdaki sorun giderme kılavuzlarını geliştirdik:

Microsoft bu genel sorun giderme kılavuzlarıyla birlikte kitaplığa özgü sorun giderme kılavuzları da sağlar. Şu anda aşağıdaki kılavuzlar kullanılabilir:

Aşağıdaki içerik, bu belgelerin ötesinde, Java için Azure SDK'sı ile ilgili olarak günlüğe kaydetme ve özel durum işlemeyi en iyi şekilde kullanma konusunda rehberlik sağlar.

Java için Azure SDK'da günlüğe kaydetmeyi kullanma

Aşağıdaki bölümlerde farklı günlük türlerinin nasıl etkinleştirileceği açıklanmaktadır.

İstemci günlüğünü etkinleştirme

Sorunları gidermek için önce uygulamanızın davranışını izlemek için günlüğe kaydetmeyi etkinleştirin. Günlüklerdeki hatalar ve uyarılar genellikle neyin yanlış gittiğine ilişkin yararlı içgörüler sağlar ve bazen sorunları düzeltmek için düzeltici eylemler içerir. Java için Azure SDK kapsamlı günlük kaydı desteğine sahiptir. Daha fazla bilgi için bkz. Java için Azure SDK'da günlüğe kaydetmeyi yapılandırma.

HTTP isteği/yanıt günlüğünü etkinleştirme

Sorunları giderirken, Azure hizmetler arasında gönderilen ve alınan HTTP isteklerini gözden geçirin. HTTP isteğinin ve yanıt yükünün günlüğe kaydedilmesini etkinleştirmek için, aşağıdaki örnekte gösterildiği gibi Java için Azure SDK’sındaki istemci kitaplıklarının neredeyse tümünü istemci oluşturucularında yapılandırın. İstemci oluşturucusundaki httpLogOptions yöntemine ve HttpLogDetailLevel içindeki sabit listesi değerlerine dikkat edin.

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

Bu kod, tek bir istemci örneği için HTTP isteğini ve yanıt günlüğünü değiştirir. Alternatif olarak, ortam değişkenini aşağıdaki tabloda yer alan değerlerden birine ayarlayarak AZURE_HTTP_LOG_DETAIL_LEVEL tüm uygulamanız için HTTP isteklerinin ve yanıtlarının günlüğe kaydedilmesini yapılandırabilirsiniz. Bu değişiklik, HTTP istek ve yanıtlarının günlüğe kaydedilmesini destekleyen tüm Azure istemcileri için günlük kaydını etkinleştirir.

Değer Kayıt seviyesi
none HTTP isteği ve yanıt günlüğü devre dışı bırakıldı.
basic Yalnızca URL'leri, HTTP yöntemlerini ve isteği tamamlama süresini günlüğe kaydeder.
headers BASIC'te kaydedilen her şeye ek olarak, tüm istek ve yanıt başlıklarını da günlüğe kaydeder.
body BASIC'teki her şeyin yanı sıra tüm istek ve yanıt gövdesini günlüğe kaydeder.
body_and_headers Başlıklar ve içerik içindeki her şeyi günlüğe kaydeder.

Uyarı

İstek ve yanıt gövdelerini kaydederken, bunların gizli bilgiler içermediğinden emin olun. Sorgu parametreleri ve üst bilgilerini günlüğe kaydederken, istemci kitaplığının varsayılan olarak günlük kaydı için güvenli kabul edilen bir sorgu parametresi ve üst bilgisi kümesi vardır. Aşağıdaki örnekte gösterildiği gibi, günlüğe kaydedilmesi güvenli ek sorgu parametreleri ve üstbilgileri ekleyebilirsiniz:

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

Java için Azure SDK'da özel durum işleme

Java istemci hizmeti yöntemleri için çoğu Azure SDK, hata durumunda httpResponseException veya daha belirli bir alt sınıf oluşturur. Türü, HttpResponseException neyin yanlış gittiğine ilişkin belirli yararlı içgörüler sağlayan ve yaygın sorunları düzeltmek için düzeltici eylemler içeren ayrıntılı bir yanıt hata nesnesi içerir. Bu hata bilgilerini nesnenin ileti özelliğinde HttpResponseException bulabilirsiniz. Bu özel durumlar çalışma zamanı özel durumları olduğundan JavaDoc başvuru belgeleri bunları açıkça belirtmez.

Aşağıdaki örnekte, zaman uyumlu bir istemciyle bu özel durumu nasıl yakalayabileceğiniz gösterilmektedir:

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
}

Asenkron istemcilerle, aşağıdaki örnekte gösterildiği gibi hata geri arama fonksiyonlarında özel durumları yakalayabilir ve işleyebilirsiniz.

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

Java için Azure SDK'da izlemeyi kullanma

Java için Azure SDK kapsamlı izleme desteği sunarak uygulama kodunuz ve kullanmakta olduğunuz istemci kitaplıkları aracılığıyla yürütme akışını görmenizi sağlar. OpenTelemetry SDK'sını kullanarak ve yapılandırarak veya OpenTelemetry uyumlu bir aracı kullanarak Azure istemci kitaplıklarında izlemeyi etkinleştirebilirsiniz. OpenTelemetry, bulutta yerel yazılımlar için telemetri verileri oluşturmaya, yakalamaya ve toplamaya yönelik popüler bir açık kaynak gözlemlenebilirlik çerçevesidir.

Java için Azure SDK'da izlemeyi etkinleştirme hakkında daha fazla bilgi için bkz. Java için Azure SDK'da izlemeyi yapılandırma.

Sonraki Adımlar

Bu makaledeki sorun giderme kılavuzu, Java istemci kitaplıkları için Azure SDK kullanırken karşılaşılan sorunları çözmeye yardımcı olmazsa, Java GitHub deposu için Azure SDKbir sorun oluşturun.