Web uygulamalarınızı Azure üzerinde web app olarak yapılandırmak kuşkusuz yönetim anlamında oldukça rahatlık sağlayacaktır. Bunlara ek olarak Azure’un web app’ler için sağladığı bir sürü özellik sayesinde uygulamalarınız hem ulaşılabilirlik bakımından, hem yedeklilik bakımından hemde performans anlamında optimum düzeyde olacaktır. Tabi tüm bunların yanında web uygulamaları için gerekli olan en önemli bileşenlerden birisi de kuşkusuz loglamadır. Onpremise ortamlarda sunucuların üzerindeki gerek sunucu logları gerekse IIS logları bizlere hata ayıklama işlemleri sırasında oldukça anlamlı bilgiler sunmaktadır. Peki Azure üzerinde yönetilen bir platform olan web app’ler üzerinde istediğimiz loglara erişmek onpremise ortamındaki gibi kolay mı?
İşte b günkü makalemde sizlere bu sorunun cevabını ayrıntılı olarak anlatmaya çalışacağım. Makalenin çok uzun olmasını engellemek açısından bir kaç bölümde ele alacağım. Umarım herkes için faydalı bir yazı olur.
Öncelikle işe temelden başlamak istedim. Bu amaçla Visual Studio üzerinde hazır şablonları kullanarak .Net core 2.2 ile Razor Pages mimarisinde bir web uygulaması oluşturdum. Bunu oluşturmamdaki amaç uygulamalara logging mekanizmalarının nasıl entegre edilebileceğini göstermek. Bundan sonraki kısmı da adım adım yapılandırarak anlatmaya çalışacağım.
Uygulamayı oluşturduktan sonra Azure App Service uyumlu “Microsoft.Extensions.Logging.Azure.AppServices” extension’ının Nuget Package Manager yardımı ile yüklenmesi gerekir. Bu amaçla aşağıdaki gibi ilgili extension’ı bulup install butonuna tıklayarak kurulumu gerçekleştirelim.
Resim – 1
Bu işlemin ardından program.cs üzerine aşağıdaki şekilde yeni eklediğimiz extension’a ilişkin namespace’i ekleyelim.
Resim – 2
Name space’i ekledikten sonra konfigürasyonlarımıza başlayabiliriz. ASP.NET Core uygulamaları bir host instance’ı oluştururlar. Host uygulamanın başlatılmasından ve hayat döngüsünden sorumludur. Host, uygulama için bir server ve request processing pipeline oluşturur. Aynı zamanda konfigürasyon ve loglamadan da sorumludur.
Bu makalede loglama anlattığımız için host builder metodunu eklediğimiz extensions ile editlememiz gerekecek.
IwebHostBuilder web host, web app’leri host eder. Bu işlemi genelde Main metodunın içerisinde yapar. Main metodu da Program.cs içerisinde bulunur.
Şimdi öncelikle burada loglama’yı etkinleştirmek için aşağıdaki şekilde belirttiğim kodu CreateWebHostBuilder metoduna ekleyelim.
Resim – 3
Program.cs üzerinde logging’i etkinleştirdikten sonra, test olarak bir razor page ekleyip bu sayfa üzerinde gerekli konfigürasyonları yapalım.
DynamicDataPage isimli sayfanın code behind kısmına extension’a ilişkin name space’i ekleyelim. Sonrasında dependency injection için gerekli constructer’ı ekleyelim. Bu işlem sayfa yüklendiğinde logging için gerekli instance’ı oluşturacaktır.
Resim – 4
Daha sonrasında razor page’in OnGet() isimli metoduna gelip aşağıdaki şekilde logger isimli değişkene CreateLogger metodu ile oluşturduğumuz instance’ı atayalım. Bu işlemin ardından critical,error ve information loglarına ilişkin açıklamaları şekildeki gibi ekleyelim. (.cshtml dosyasına message değişkenini eklemeyi unutmayın)
Resim – 5
Bu işlemlerin ardından web uygulamasını build edip test ettiğinizde web uygulamanız basit olarak aşağıdaki gibi görünecektir.
Resim – 6
DynamicData isimli sayfayı kontrol ettiğinizde test mesajı aşağıdaki gibi görüntülenecektir. Bu sayfayı çağırdığınızda OnGet() metodu çağrılacağı için bu metod içerisine eklediğimiz loglar visual studio konsolunda output olarak görünecektir.
Resim – 7
Visual Studio konsolunda output olarak loglar aşağıdaki şekilde görünmektedir.
Resim – 8
Hızlı şekilde basit bir web uygulaması oluşturup, loglama için gerekli olan extension’ları ekleyip konfigüre ettik. Bu aşamadan sonra uygulamamızı Azure üzerine Wep App olarak publish edeceğiz. Bu işlemden sonraki kısımlarda yapacağımız farklı loglama konfigürasyonlarında bu logları takip ediyor olacağız.
Bir sonraki kısımda görüşmek üzere.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
https://docs.microsoft.com/en-us/azure/app-service/troubleshoot-diagnostic-logs
https://app.pluralsight.com/library/courses/microsoft-azure-app-services-managing
TAGs: Azure Logging, Azure Log Streaming, Azure Web App Logging, Azure app service logging, Azure web app application logging, Windows Server logging, Azure for Architects, Azure Architect, Azure IAAS Planning, Azure SAAS Planning, Azure app services, Azure web app diagnostic, Azure app service diagnostic, Azure web app diagnostic logs, Log streaming with powershell, Azyre web app log streaming with azure cli