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

Tamamlandı

Bu ünitede, uygulama günlüğünün Web uygulamalarınızda nasıl yardımcı olabileceğini inceleyeceğiz ve size bu günlükleri nasıl etkinleştirebileceğinizi göstereceğiz.

Uygulama günlükleri nelerdir?

Azure, uygulama günlüğü ile yerleşik tanılama sağlar. 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 için bir izleme ekleyerek kodunuzdaki bazı mantığı denetlemek isteyebilirsiniz. Veya yalnızca belirli bir hata düzeyi oluştuğunda günlüğe kaydedilen bir iletiyi görmek isteyebilirsiniz. Aşırı günlükler performans isabeti taşıyabileceği ve depolama alanını hızla tüketebildiği için uygulama günlüğü öncelikli olarak üretim öncesi uygulamalar ve sorunlu sorunlar içindir. bu nedenle, dosya sisteminde oturum açma işlemi 12 saat sonra otomatik olarak devre dışı bırakılır.

Uygulama günlüğünde, öncelikli olarak günlüğe kaydedilen çıkışı kaydetmek için dosyalar kullanıldığından ölçeklendirme sınırlamaları vardır. Bir uygulamanın birden çok örneğiniz varsa ve aynı depolama tüm örneklerde paylaşılıyorsa, farklı örneklerden gelen iletiler araya eklenebilir ve bu da sorun gidermeyi zorlaştırabilir. Her örneğin kendi günlük dosyası varsa, birden çok günlük vardır ve bu da örneğe özgü sorunları gidermeyi zorlaştırı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. Azure portalında gösterilen , , warninginformationve verbose günlük düzeyleriyle bağıntılı errordört izleme düzeyi kullanabilirsiniz:

  • 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:

  • Düzey 4 ve 5 hata iletileridir.
  • Düzey 3 bir uyarı iletisidir.
  • Düzey 2 bir bilgi iletisidir.
  • Düzey 0 ve 1 ayrıntılı iletilerdir.

Linux'ta ASP.NET Core uygulamaları için yalnızca hata iletileri (düzey 4 ve 5) 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 ileti türü 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, windows uygulama hizmetinde çalışırken bile günlük seçenekleri geliştirme platformuyla sınırlıdır.

Uygulamanın kapsayıcısı için kullanılan Docker görüntüsü, Node gibi Linux tabanlı betikli uygulamalarda kullanılabilen günlük işlevselliğini belirler. STDERR veya STDOUT'a yeniden yönlendirmeleri kullanma gibi temel günlükler Docker günlüklerini kullanır. Daha zengin günlüğe kaydetme işlevi, temel alınan görüntüye ve PHP, Perl, Ruby vb. çalıştırıp çalıştırmadığına bağlıdır. Windows uygulamalarına IIS tarafından sağlananla 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ı Ana Bilgisayar 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 Uygulaması lication Analizler, ayrıntılı kullanım ve performans verileri gibi daha fazla performans izleme özelliği sağlayan bir site uzantısıdır. Üretim uygulaması dağıtımları için tasarlanmıştır ve yararlı olabilecek bir geliştirme aracıdı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. Uygulama Analizler aynı zamanda faturalanabilir bir hizmettir. Bu nedenle, uygulama dağıtımlarınızın ölçeğine ve toplanan verilere bağlı olarak, düzenli maliyetleri planlamanız gerekebilir.

Uygulamanızın çalışma şeklinin profilini oluşturmanıza yardımcı olabilecek Ölçümler'i de görüntüleyebilirsiniz. bu sayaçlar üretim ve 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.

Screenshot of Diagnostics logs pane in the Azure portal.

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ı olarak sıfırlanır.

Blob depolama kapsayıcısına uygulama günlüğünü etkinleştirmek için Uygulama günlüğü (Blob) ayarını Açık olarak ayarlayın ve ardından bir depolama hesabı ve kapsayıcı seçin. Depolama hesabı ve Web uygulaması aynı Azure bölgesinde oluşturulmalıdır. Bundan sonra Düzey ayarı olarak Hata, Uyarı, Bilgi veya Ayrıntılı'yı seçersiniz.

Dekont

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üklerinin aksine blob günlükleri varsayılan olarak hiçbir zaman silinmez. Bekletme süresi seçeneği, belirtilen gün sayısından eski tüm günlüklerin silindiği anlamına gelir.

Screenshot of configuring application logs in the Azure portal with Save highlighted.

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

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

Dosya sisteminde uygulama günlüğünü etkinleştirmek için aşağıdaki komutu çalıştırın.

az webapp log config --application-logging filesystem --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 filesystem --level verbose --name contosofashions123 --resource-group contosofashionsRG

Şu anda Azure CLI komutlarını kullanarak uygulama günlüğünü devre dışı bırakmanın bir yolu yoktur. Ancak, aşağıdaki komut dosya sistemi günlüğünü yalnızca hata düzeyine sıfırlar.

az webapp log config --application-logging off --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>

Bilgilerinizi kontrol edin

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?