Aracılığıyla paylaş


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

Bu makalede, Java için Azure SDK'yı kullanırken kullanabileceğiniz 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. Tüm istemci kitaplıklarının yapılandırma, günlüğe kaydetme, özel durum işleme ve sorun giderme için ortak desenlerle tutarlı, yüksek standartlı bir şekilde derlenmesini sağlıyoruz. 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 gözden geçirmek isteyebileceğiniz aşağıdaki sorun giderme kılavuzlarını geliştirdik:

Bu genel sorun giderme kılavuzlarıyla birlikte, kitaplığa özgü sorun giderme kılavuzları da sağlıyoruz. Ş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 öncelikle uygulamanızın davranışını izlemek için günlüğe kaydetmeyi etkinleştirmek önemlidir. 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 hizmetleri arasında gönderilen ve alınan HTTP isteklerini gözden geçirmek yararlı olur. 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 istemci oluşturucularında Java istemci kitaplıkları için neredeyse tüm Azure SDK'sını yapılandırabilirsiniz. İ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ği/yanıt günlüğünü değiştirir. Alternatif olarak, AZURE_HTTP_LOG_DETAIL_LEVEL çevre değişkenini aşağıdaki tabloda yer alan değerlerden birine ayarlayarak uygulamanızın tamamı için HTTP isteklerinin ve yanıtlarının günlüğe kaydedilmesini yapılandırabilirsiniz. Azure'da HTTP istek/cevaplarını loglamayı destekleyen her istemci için loglamayı etkinleştiren bu değişikliği hatırlamak önemlidir.

Değer Kayıt seviyesi
none HTTP isteği/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 kaydetmesi güvenli olan ek sorgu parametreleri ve üst bilgileri eklemek mümkündür:

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

Çoğu Java için Azure SDK istemci hizmeti yöntemi, hata durumunda httpResponseException veya daha özel 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'sını kullanırken karşılaşabileceğiniz sorunları çözmeye yardımcı olmazsa, Azure SDK for Java GitHub deposunda bir sorun bildirmenizi tavsiye ederiz.