App Service uygulama günlüğünü etkinleştirme ve yapılandırma

Tamamlandı

Bu ünitede, uygulama günlüğünün Web uygulamalarınıza nasıl yardımcı olabileceğini ve bu günlüklerin nasıl etkinleştirileceğini göreceksiniz.

Uygulama günlükleri nelerdir?

Uygulama günlükleri uygulama kodundaki çalışma zamanı izleme deyimlerinin çıkışıdır. Örneğin, belirli bir işlevin ne zaman işlendiğini göstermek üzere bir izleme ekleyerek kodunuzda belirli bir mantığı denetlemek veya yalnızca belirli düzeyde bir hata oluştuğunda günlüğe kaydedilen iletiyi görmek isteyebilirsiniz. Uygulama günlüğü öncelikle ön üretim aşamasındaki uygulamalara yöneliktir ve sıkıntı yaratan sorunlar içindir çünkü aşırı günlük kaydı performansı zorlayabilir ve depolamayı hızla tüketir; bu nedenle dosya sistemine günlük kaydı 12 saat sonra otomatik olarak devre dışı bırakılır.

Uygulama günlüğünün ölçek sınırlamaları vardır. Bunun nedeni, dosyaların günlüğe kaydedilen çıkışı kaydetmek için kullanılıyor olmasıdır. Bir uygulamanın birden çok örneğine sahipseniz ve tüm örneklerde aynı depolama paylaşılıyorsa, farklı örneklerden gelen iletiler birbirinin arasına eklenebilir ve bu da sorun gidermeyi zorlaştırabilir. Her örneğin kendi günlük dosyası olursa, birden çok günlük dosyası olacaktır ve bu da yine örneğe özgü sorunları gidermeyi zorlaştıracaktır.

Azure App Service aracılığıyla sağlanan günlük türleri uygulamanın kod çerçevesine ve uygulamanın Windows uygulama konağı üzerinde mi yoksa Linux uygulama konağı üzerinde mi çalıştırıldığına bağlıdır.

ASP.NET

ASP.NET uygulamaları, yalnızca Windows uygulama hizmetleri üzerinde çalışır. Bilgileri uygulama tanılama günlüğüne kaydetmek için System.Diagnostics.Trace sınıfını kullanın. Kullanabileceğiniz dört izleme düzeyi vardır ve bunlar, aşağıda gösterilen error , , ve günlük warning information verbose düzeyleriyle Azure portal:

  • Trace.TraceError("Message"); // Bir hata iletisi yazar
  • Trace.TraceWarning("Message"); // Bir uyarı iletisi yazar
  • Trace.TraceInformation("Message"); // Bir bilgi iletisi yazar
  • Trace.WriteLine("Message"); // Ayrıntılı bir ileti yazar

ASP.NET Core uygulamaları

ASP.NET Core uygulamaları Windows veya Linux üzerinde çalıştırılabilir. Bilgileri Azure uygulama günlüklerine kaydetmek için logger factory sınıfını ve sonra da altı günlük düzeyinden birini kullanın:

  • logger.LogCritical("Message"); // 5. günlük düzeyinde kritik bir ileti yazar
  • logger.LogError("Message"); // 4. günlük düzeyinde bir hata iletisi yazar
  • logger.LogWarning("Message"); // 3. günlük düzeyinde bir uyarı iletisi yazar
  • logger.LogInformation("Message"); // 2. günlük düzeyinde bir bilgi iletisi yazar
  • logger.LogDebug("Message"); // 1. günlük düzeyinde bir hata ayıklama iletisi yazar
  • logger.LogTrace("Message"); // 0. günlük düzeyinde ayrıntılı bir izleme iletisi yazar

Windows üzerinde ASP.NET Core uygulamaları için, bu iletiler Azure portalındaki filtrelerle şu şekilde ilişkilendirilir:

    1. ve 5. düzeyler "hata" iletileridir.
    1. düzey "uyarı" iletisidir.
    1. düzey "bilgi" iletisidir.
    1. ve 1. düzeyler "ayrıntılı" iletilerdir.

Linux üzerinde ASP.NET Core uygulamaları için, yalnızca "hata" iletileri (4. ve 5. düzeyler) günlüğe kaydedilir.

Node.js uygulamaları

Windows veya Linux üzerindeki Node.js uygulamaları gibi betik tabanlı Web uygulamaları için, uygulama günlüğü console() yöntemi kullanılarak etkinleştirilir:

  • console.error("Message") - STDERR'ye bir ileti yazar
  • console.log("Message") - STDOUT'a bir ileti yazar

Her iki tür ileti de Azure App Service hata düzeyi günlüklerine yazılır.

Windows ile Linux ana bilgisayarlar arasındaki günlük farkları

Azure Web uygulamaları iletileri günlük dosyalarına yönlendirmek için Web sunucusu (IIS işlemi) kullanır. Windows tabanlı Web uygulamaları iyi tanınan bir Azure hizmetidir ve ASP.NET uygulamalarının mesajlaşması ile temel IIS hizmeti arasında sıkı bir tümleştirme vardır. Windows uygulamaları zengin bir günlük altyapısından yararlanır. Diğer uygulamalar için, bir Windows uygulama hizmeti üzerinde çalışıyor olsa bile günlük seçenekleri geliştirme platformu tarafından sınırlanabilir.

Node gibi Linux tabanlı betik uygulamalarına sağlanan günlük işlevselliği, uygulamanın kapsayıcısı için kullanılan Docker görüntüsü tarafından belirlenir. Temel günlükte, STDERR veya STDOUT'a yeniden yönlendirmeler aracılığıyla Docker günlükleri kullanılır. Daha zengin günlük işlevselliği temel görüntüye bağlıdır (PHP, Perl, Ruby vb. çalıştırıp çalıştırmadığı gibi). Windows uygulamalarına IIS tarafından sağlanan gibi eşdeğer bir Web uygulama günlüğü indirmek için, SSH kullanarak kapsayıcınıza bağlanmanız gerekebilir.

Aşağıdaki tabloda yaygın uygulama ortamları ve konaklara yönelik günlük desteği özetlenmiştir.

Uygulama ortamı Yönetici Günlük düzeyleri Kaydetme konumu
ASP.NET Windows Hata, Uyarı, Bilgi, Ayrıntılı Dosya sistemi, Blob depolama
ASP.NET Core Windows Hata, Uyarı, Bilgi, Ayrıntılı Dosya sistemi, Blob depolama
ASP.NET Core Linux Hata Dosya sistemi
Node.js Windows Hata (STDERR), Bilgi (STDOUT), Uyarı, Ayrıntılı Dosya sistemi, Blob depolama
Node.js Linux Hata Dosya sistemi
Java Linux Hata Dosya sistemi

Uygulama tanılamanın alternatifleri

Azure Application Insights, ayrıntılı kullanım ve performans verileri gibi ek performans izleme özellikleri sağlayan bir site uzantısıdır ve hem üretim uygulama dağıtımları için hem de kullanışlı olabilecek bir geliştirme aracı olarak tasarlanmıştır. Application Insights bir dizi uygulama geliştirme ortamında çalışır ve uygulamanın ASP.NET veya Node olmasına bakılmaksızın aynı zengin telemetri ve performans verileri kümesini sağlar. Öte yandan, Application Insights'ı kullanabilmek için App Insights SDK'sını kullanıp uygulamanıza belirli bir kod eklemeniz gerekir. Application Insights aynı zamanda faturalanabilir bir hizmettir; dolayısıyla uygulama dağıtımlarınızın ve toplanan verilerinizin ölçeğine bağlı olarak, düzenli maliyetler için planlama yapmanız gerekebilir.

Ayrıca uygulamanız için Ölçümler'i görüntüleyebilirsiniz ve bunlar uygulamanızın çalışmasının profilini çıkarmanıza yardımcı olabilir. Bu sayaçlar hem üretimde hem de geliştirmede yararlıdır. CPU, bellek, ağ ve dosya sistemi kullanımını görüntüleyebilir, bir sayaç belirli bir eşiğe ulaştığında uyarılar ayarlayabilirsiniz. Ölçümlerin faturalaması, uygulama hizmeti plan katmanına dahildir.

Azure portalını kullanarak günlüğü etkinleştirme

Portalda, uygulama günlüğü web uygulamasının Tanılama günlükleri bölmesinden yönetilir.

Azure portalında Tanılama günlükleri bölmesinin ekran görüntüsü.

Web uygulamasının dosya sistemine uygulama günlüğü kaydını etkinleştirmek için, Uygulama Günlüğü (Dosya Sistemi) seçeneğini Açık olarak ayarlayın ve Düzey ayarı olarak da Hata, Uyarı, Bilgi veya Ayrıntılı’yı seçin. Dosya sisteminde günlüğe kaydetme işlemi 12 saat sonra otomatik olarak Kapalı ayarına sıfırlanır.

Blob depolama kapsayıcısında uygulama günlüğünü etkinleştirmek için, Uygulama günlüğü (Blob) seçeneğini Açık olarak ayarlayın, sonra da depolama hesabı ve kapsayıcı seçin; depolama hesabının ve Web uygulamasının aynı Azure bölgesinde oluşturulmuş olması gerekir. Bundan sonra Düzey ayarı olarak Hata, Uyarı, Bilgi veya Ayrıntılı'yı seçersiniz.

Not

Blob depolamaya kaydetme seçeneği Linux uygulama günlüklerinde kullanılamaz.

Blob depolamada günlüğe kaydederken Bekletme Süresi'ni de ayarlamalısınız. Dosya sistemi günlüklerinden farklı olarak blog günlükleri hiçbir zaman varsayılan olarak silinmez; bekletme süresi seçeneği, belirtilen gün sayısından eski olan tüm günlüklerin silineceği anlamına gelir.

Kaydet düğmesini vurgulayan açıklama balonuyla birlikte Azure portalında uygulama günlüklerini yapılandırma ekran görüntüsü.

Günlükleri yapılandırdıktan sonra Kaydet’i seçin.

Azure CLI'yı kullanarak günlüğü etkinleştirme

Azure CLI'nın geçerli sürümü, blob depolamada uygulama günlüğünü yönetmenize olanak tanımaz. Dosya sisteminde uygulama günlüğünü etkinleştirmek için aşağıdaki komutu çalıştırın.

az webapp log config --application-logging true --level verbose --name <app-name> --resource-group <resource-group-name>

Örneğin, contosofashions123 adlı bir uygulamada dosyası sistemine günlük kaydını etkinleştirmek, tüm iletileri yakalamak için aşağıdaki komutu çalıştırın.

az webapp log config --application-logging true --level verbose --name contosofashions123 --resource-group contosofashionsRG

Şu anda Azure CLI komutlarını kullanarak uygulama günlüğünü devre dışı bırakmak için hiçbir yol sağlanmamaktadır; öte yandan aşağıdaki komut dosya sistemi günlüğünü yalnızca hata düzeyine sıfırlar.

az webapp log config --application-logging false --name <app-name> --resource-group <resource-group-name>

Uygulamanın geçerli günlük durumunu görüntülemek için şu komutu kullanın.

az webapp log show --name <app-name> --resource-group <resource-group-name>

Bilginizi ölçün

1.

Hangi tür Web uygulamaları günlükleri Azure Blob depolamaya kaydedebilir?

2.

Dosya sistemi günlüğü neden 12 saat sonra otomatik olarak kapatılıyor?