ASP.NET Core'da Logging Kullanımı

ASP.NET Core'da Logging Kullanımı

ASPNET Core, web uygulamalarının oluşturulması sırasında kullanılan bir framework'tür Logging, yazılımların çalışma zamanında gerçekleşen olayların kaydedilmesini ve takip edilmesini sağlar ASPNET Core, loglama mekanizmalarını baştan tasarlamış ve geliştirmiştir Log seviyeleri, log formatları ve çeşitli loglama yöntemleriyle kullanıcıların uygulamanın çalışmasını takip etmelerine ve hataları tespit etmelerine yardımcı olur İşlemlerin takibi ve gerçekleşen hataların kolayca tespit edilebilmesi için doğru yapılandırılmış loglama araçları oldukça önemlidir

ASP.NET Core'da Logging Kullanımı

ASP.NET Core, web uygulamaları oluşturma esnasında tercih edilen bir framework'tür. Uygulama geliştiricileri, yazdıkları uygulamanın nasıl çalıştığını ve hangi işlemler gerçekleştiğini takip ederek ciddi avantajlar elde edebilirler. Bu noktada karşımıza çıkan logging kavramı, ASP.NET Core uygulamalarında kullanılan en önemli özelliklerden biridir.

Logging, yazılımların çalışma zamanında gerçekleşen belirli olayların kaydedilmesine, takip edilmesine ve raporlanmasına olanak tanır. ASP.NET Core framework, uygulamaların daha kolay takip edilmesini sağlamak için loglama mekanizmalarını baştan tasarlamış ve geliştirmiş durumdadır. Bu loglama özelliklerinin bir kısmı, log seviyeleri, log formatları ve çeşitli loglama yöntemleridir.


Logging Nedir?

Logging, bir yazılımın çalışması sırasında gerçekleşen işlemlerinin kaydedilmesi, takibi ve raporlanması için kullanılan bir yöntemdir. Bu işlemler arasında hata ayıklama, performans analizi ve kullanım istatistikleri üzerinde çalışma gibi birçok farklı konu yer alabilir.

Loglama, geliştiricilerin bir yazılımın iç işleyişini daha iyi anlamalarına ve geliştirme sürecindeki kararlarını desteklemelerine yardımcı olan önemli bir araçtır. Kaydedilen veriler, sürekli olarak yenilenen bir kaynak olarak kullanılabilir ve yazılımın hataları ve performans sorunları gibi kritik konularda yardımcı olabilir.


ASP.NET Core Logging Özellikleri

ASP.NET Core, uygulama geliştirme işlemleri sırasında loglama yöntemi kullanarak hatanın nerede olduğu veya nasıl gerçekleştiği gibi önemli bilgiler elde etmenin yanı sıra uygulamanın performansı ile ilgili veriler de toplamaktadır. ASP.NET Core'un loglama özellikleri ve kullanımı hakkında bilgi sahibi olmak, yazılım hatalarını kolayca tespit etmek ve doğru şekilde raporlamak için oldukça önemlidir.

ASP.NET Core'un Logging API'si, uygulamanın loglama düzeylerini belirleyen log seviyesi yapılandırmasını desteklemektedir. Bu seviyeler, Log Level olarak adlandırılmakta ve uygulamanın geliştirilme şekline bağlı olarak sadece belirli seviyelerde loglar yazdırılabilmektedir. Farklı seviyelerdeki loglama düzeyleri Trace, Debug, Information, Warning, Error ve Critical olarak belirlenmiştir.

ASP.NET Core Loglama Düzeyleri
Log Seviyesi Açıklama
Trace En düşük seviyedeki loglar
Debug Uygulama geliştirme sürecinde kullanılan en yaygın loglama seviyesi
Information Uygulamanın genel performansı hakkında bilgi sağlayan log düzeyi
Warning Uygulamanın çalışması sırasında dikkat edilmesi gereken durumların loglandığı seviye
Error Uygulamanın çalışması sırasında ortaya çıkan hataların loglandığı seviye
Critical En yüksek seviye loglama düzeyi, kritik hataların kaydedildiği seviye

ASP.NET Core Loglama API'si, farklı log formatlarını desteklemektedir. Bu formatlar arasında en yaygın olanı JSON formatıdır. JSON formatı, yüksek düzeyde yapılandırılabilir ve kolay okunabilir olması nedeniyle tercih edilmektedir. Ayrıca, uygulamanın herhangi bir bölümünde çalıştırılabilecek konsol loglama ve dosya loglama gibi farklı loglama yöntemleri de mevcuttur.

  • Console Logging: Uygulamanın konsolda log yazdırması için kullanılan yöntemdir. Bu yöntem, uygulamanın çalıştığı ortamı görebilmek için oldukça yararlıdır.
  • Debugging Middleware'ın Kullanımı: Bu yöntem, uygulamanın herhangi bir bölümünde hata ayıklama yapmak için kullanılan bir araçtır. Loglama için de kullanılabilir.
  • File Logging: Logların belirli bir dosyaya yazdırılması yöntemi
  • Database Logging: Logların bir veritabanına yazdırılması yöntemi, büyük ölçekli uygulamalar için uygundur.

ASP.NET Core loglama özellikleri ve kullanımı ile ilgili tüm bu bilgiler, bir yazılımın hatasız çalışmasını sağlamak için oldukça önemlidir. Doğru yapılandırılarak kullanıldığında, loglama araçları ile işlemler takip edilebilir ve gerçekleşen hatalar kolayca tespit edilebilir.


Log Level'larının Tanımlanması

ASP.NET Core'da loglama yaparken hangi seviyede logların kaydedileceği oldukça önemlidir. Log seviyesi, uygulamanın çalışması sırasında hangi verilerin kaydedileceğini belirler. Bazı durumlarda tüm logların kaydedilmesi gerekebilir, bazı durumlarda ise sadece önemli logların kaydedilmesi yeterli olabilir.

ASP.NET Core'da 6 farklı log seviyesi bulunmaktadır. Bu seviyeler sırasıyla; Trace, Debug, Information, Warning, Error, Critical şeklindedir. Her seviye belirli bir amaç doğrultusunda kullanılır ve hangi seviyenin ne zaman kullanılacağına karar vermek uygulama geliştiricilerinin sorumluluğundadır.

Seviye İsmi Açıklama
Trace En düşük seviyeli loglama seviyesidir. Uygulamada meydana gelen küçük ayrıntıların kaydedilmesi için kullanılır.
Debug Bir adım daha yüksek seviyeli loglama seviyesidir. Programın çalışması sırasında istenmeyen durumların takibi için kullanılır.
Information Gözlemlemek istediğiniz herhangi bir olayı kaydetmek için kullanabileceğiniz bir loglama seviyesidir.
Warning Uygulamanın çalışması sırasında dikkat edilmesi gereken konuların loglanması için kullanılır. Örneğin, kritik bir değer için sınırın altında bir değer elde edildiğinde bu seviyede loglama yapılabilir.
Error Bir hata meydana geldiğinde bu seviyeli loglama yapılır. Hata mesajları gibi önemli bilgiler kaydedilebilir.
Critical En yüksek seviyede loglama yapmak olan Critical seviyesinde ne zaman kayıt tutulması gerektiği ve nasıl olması gerektiği hakkında bilgiler

Hangi seviyenin kullanılacağına karar verirken, loglama amacınızı ve uygulamanızın gereksinimlerini dikkate almalısınız. Bu seviyeler arasındaki farkları kavramak için örnek olaylar ve loglama seviyeleri belirlenebilir.


Trace

Trace, en düşük seviyeli loglama seviyesidir ve uygulama hakkında ayrıntılı bilgi toplamak için kullanılır. Bu seviyede loglama yapmak, uygulamanın her adımının takip edilmesini sağlar. Trace seviyesinde loglama yapılması, uygulamadaki her adımın ayrıntılı bir şekilde kaydedilir ve bu da logların büyük ve detaylı olmasına neden olur.

Trace seviyesinde loglama yapmak, uygulama geliştiricilerine sorunların tespit edilmesinde yardımcı olur. Uygulamanın her adımının ayrıntılı olarak kaydedilmesi, belirli bir işlemin hangi aşamada başarısız olduğunu veya hangi aşamada beklenmeyen bir sonuçla karşılaşıldığını gösterir. Bu nedenle, Trace seviyesinde loglama yapmak, uygulamadaki sorunların tespiti ve giderilmesinde yardımcı olur.


Debug

Debug seviyesi, uygulamanın çalışması sırasında gözlem yapılan ve takip edilen seviyedir. Debug seviyesinde loglama yapmanın amacı, uygulamada hata oluştuğunda hatanın bulunmasını kolaylaştırmaktır. Genellikle uygulamanın geliştirme aşamasında kullanılır.

Debug seviyesinde loglama yapmak için öncelikle, uygulamanın konfigürasyon dosyasında log seviyesinin "Debug" olarak tanımlanması gereklidir. Böylece, Debug seviyesindeki tüm loglar kaydedilir.

Kod Açıklama
"LogLevel": { "Default": "Debug", "Microsoft": "Warning" } log seviyesi tanımlanması

Debug seviyesinde loglama yapmak sadece debugging aşamasında yapılır. Bu aşamada, bu log seviyesindeki tüm bilgiler kaydedilir ve development aşamasında hata ayıklama yapmak kolaylaşır.

Debug seviyesinde loglama yapmak için, uygulamanın kodlarında da kendi loglarını oluşturabilirsiniz. Bu loglar sayesinde, uygulama çalışırken belirli noktalarda veri yazdırabilirsiniz.

  • Debug seviyesinde loglama, uygulamanın geliştirme aşamasında kullanılır.
  • Uygulamanın yapılandırma dosyasında log seviyesi "Debug" olarak tanımlanır.
  • Debug seviyesinde loglama yapmak sayesinde, hata ayıklama kolaylaşır.
  • Kodlarınızda kendi loglarınızı oluşturarak, Debug seviyesinde veri yazdırabilirsiniz.

Information

Information Seviyesinde Loglama Yapmanın Ne Zaman Gerektiği ve Nasıl Tanımlanacağı

Information seviyesi, uygulamada gerçekleşen her işlem, işlem sonucu ve hata ayıklama süreci hakkında bilgi sağlamaktadır. Bu seviyede loglama yapmak, uygulamanın genel durumunu kontrol etmek ve geliştirmek için önemlidir. İnformation seviyesinde loglama yapılmasına örneğin; kullanıcının işlem sonucunu incelemesi, performans ölçümleri veya işlem sırasında kötü kokulu mesajların olmaması gibi durumlarda ihtiyaç duyulur.

Bir ASP.NET Core uygulamasında Information seviyesinde loglama tanımlamak için aşağıdaki örneği kullanabilirsiniz:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory){  loggerFactory.AddConsole();  loggerFactory.AddDebug();  loggerFactory.AddFile("Logs/mylog-{Date}.txt");  var logger = loggerFactory.CreateLogger("InformationLogger");  app.Run(async (context) =>  {    logger.LogInformation("Information logu, uygulama hakkında önemli bilgi sağlar.");    await context.Response.WriteAsync("Welcome to ASP.NET Core!");  });}

Bu kod örneğinde, Information seviyesi'ne sahip bir loglama tanımlanmıştır. ILoggerFactory, ILogger’daki loglama özelliklerinin ayarlandığı bir fabrikadır. Ayrıca, logların nereye yazdırılacağını belirlemek için iki farklı yöntem kullanılmıştır. AddConsole(), logları konsol ekranına yazdırmak için kullanılırken, AddDebug() yöntemi, Visual Studio Debug konsoluna yazdırmaya yarar. Son olarak, logların Dosyaya yazdırılması, AddFile() yöntemi kullanılarak belirtilmiştir.

Bir ASP.NET Core uygulamasında, Information seviyesinde logları depolamak için farklı formatlar da kullanılabilir. Json ve text formatları, logların daha okunaklı ve düzgün bir şekilde tutulmasını sağlar. Json, web API’leri üzerinden çalışırken özellikle faydalıdır.

Information seviyesine ek olarak, farklı seviyeler de tanımlanabilir. Trace, Debug, Warning, Error ve Critical gibi seviyelerin hepsi, uygulama hata ayıklama sürecinde ihtiyaç duyulan log dosyaları oluşturmak için kullanılabilir.


Warning

ASP.NET Core uygulamalarında loglama kullanımı oldukça önemlidir. Bu sayede uygulamanın çalışması sırasında ortaya çıkan hataların takibi ve çözümü kolaylaşır. Bu bağlamda, loglama seviyelerinden biri olan Warning, özellikle dikkat edilmesi gereken konuların takibi için oldukça yararlıdır.

Warning seviyesinde loglama yapmak, uygulamanın çalışması sırasında dikkat edilmesi gereken konuların kaydedilerek takibi yapılmış olur. Örneğin, bir API isteğinin çok uzun süre çalışması gibi durumlarda Warning seviyesinde loglama yapılabilir. Böylece, uygulamanın yavaşlamasının nedenleri takip edilebilir ve çözülmesi sağlanabilir.

Warning seviyesinde loglama yapmak için, logların hangi kategoride kaydedileceğinin belirlenmesi ve nasıl tanımlanacağının bilinmesi gerekir. Bu işlem için öncelikle ILogger interface'i kullanılır. ILogger interface'i, ILoggerFactory sınıfından alınır ve uygulama başlangıcında configure edilir. Configure edildikten sonra, ILogger interface'i kullanılarak loglama seviyeleri ve formatları belirlenir.

Özetle, uygulamanın çalışması sırasında dikkat edilmesi gereken konuların Warning seviyesinde loglanması ve takibi oldukça önemlidir. Bu sayede, uygulamanın performansı arttırılabilir ve hataların çözümü kolaylaştırılabilir.


Error

ASP.NET Core uygulamaları, hata ayıklama ve sorun giderme süreçlerinde Error seviyesinde loglama yapmak için oldukça önemlidir. Bir hata meydana geldiğinde ve Error seviyesinde loglama yapıldığında, hata nedenlerini daha hızlı tespit edebilir ve hızlıca çözüme kavuşturabilirsiniz. Hatayı çözmenin yanı sıra, hata tekrarlandığında bu hatanın aynı şekilde yeniden tekrarlamamasına yardımcı olacaktır.

Error seviyesinde loglama yapmak için, öncelikle hangi durumlarda Error seviyesine geçeceğinizi belirlemeniz gerekir. Bir hata olduğunda hangi hata kodlarını Error seviyesinde loglamak istediğinizi belirleyebilirsiniz. Bunun yanı sıra, hata mesajlarını ve alınacak olan aksiyonları da belirlemek önemlidir.

Bunların yanı sıra, Error seviyesinde loglama yapmak için log analiz ve raporlama araçlarına ihtiyacınız olacaktır. Hangi log formatını kullanacağınızı belirleyerek çözülmemiş hatalar ve sorunlar hakkında bilgi sahibi olabilirsiniz. Logları belirli periyotlarda temizlemek ve gereksiz verileri silmek de önemli olacaktır.


Critical

En yüksek seviyede loglama yapmak olan Critical seviyesinde , uygulamanın tamamen çökmüş olması veya büyük bir hata nedeniyle uygulamanın çalışamaz hale gelmesi durumlarında kayıt tutulması gerekmektedir. Bu seviyede loglama yapmak, uygulamanın kullanıcılarına sunulması durumunda bir aksaklık yaşanmasına veya veri kaybına neden olabilecek önemli hataların takibi açısından çok önemlidir.

Critical seviyesinde loglama yapmak için şu şekilde tanımlama yapılabilir:

LogLevel Tanımı
Critical Uygulamanın çökmüş veya kapatılmış olması durumları için kullanılır.

Bu şekilde tanımlandığında, uygulamanın kullanıcılarına sunulması sırasında önemli hatalar takip edilebilir ve bu hataların nedenleri bulunarak çözüm üretilir. Critical seviyesinde yapılan loglamalar ayrıca, uygulama performansını artırmak için de kullanılabilir.


Log Formatları

ASP.NET Core uygulama loglarının tutulmasında kullanılan log formatları farklı avantajlar sağlamaktadır. Bu formatlar logların daha rahat okunabilmesi ve yönetilebilmesi için kullanılır. Yaygın olarak kullanılan loglama formatları aşağıda belirtilmiştir:

Json formatında loglama yapmak, log verilerinin bir veri seti olarak depolanmasını sağlar ve bu nedenle okunması daha kolaydır. Ayrıca, JSON formatı, verilerin belirlenmiş bir yapıya uygun olarak saklanmasını ve işlenmesini kolaylaştırır. Bununla birlikte, log dosyaları büyük boyutlara sahip olabilir ve dosya okunurken belirli bir görselleştiriciye ihtiyaç duyulabilir.

En basit ve en yaygın kullanılan loglama formatıdır. Doğrudan bir metin dosyası olarak kaydedilir ve çoğu metin editörü ile açılabilir. Text dosyası olarak log tutulması, dosya boyutlarının küçültülmesi ve log dosyalarının okunmasının daha hızlı olmasını sağlar. Ancak, okunması zor olabilir, düzensiz olabilir ve belirli formatlama özellikleri olmaz.

ASP.NET Core'ta loglama konusunda yapılacak bir diğer seçenek format(log)/writer(log writer) .Bu yapılar birden çok (log) formatta yazdırmalardır. Ayrıca uygulama kendi (log) formatınızı da oluşturabilirsiniz.


Json Log Formatı

ASP.NET Core'da kullanılan logging yöntemlerinden biri de Json formatında loglama yapmaktır. Bu yöntem, özellikle büyük ölçekli uygulamaların takibi ve yönetimi açısından oldukça faydalıdır.

Json formatında kaydedilen loglar, metin dosyası formatına göre daha okunaklı ve anlaşılır olmaktadır. Ayrıca, birbirine bağlı olan log verileri Json formatında daha kolay şekilde takip edilebilmektedir.

Json formatında loglama yapmak için ilk olarak logların nasıl şekilleneceği belirtilmelidir. Bu şekilde logların hem okunaklı hem de anlaşılır bir formatta kaydedilmesi mümkündür. Aşağıda örnek Json formatında bir log gösterilmiştir:

{  "timestamp": "2021-05-15T10:27:45.000Z",  "level": "information",  "messageTemplate": "User '{UserName}' logged in.",  "properties": {    "UserName": "johndoe"  }}

Yukarıdaki örnek logda, her bir verinin Json formatında nasıl kaydedildiği görülebilmektedir. "timestamp" verisi logun kaydedildiği zamanı, "level" verisi logun seviyesini, "messageTemplate" verisi logun içeriğini, "properties" verisi ise loga ek olarak belirtilen özellikleri göstermektedir.

Json formatında loglama yapmak için ASP.NET Core'in "Serilog" kütüphanesi kullanılmaktadır. Bu kütüphane, Json formatında loglama yapabilmenin yanı sıra logların belirli bir dosyaya veya veritabanına kaydedilmesini de sağlamaktadır.

Json formatında loglama yapmak için öncelikle "Serilog.AspNetCore" paketinin yüklenmesi gerekmektedir. Daha sonra, "ConfigureLogging" metodu içerisinde aşağıdaki kod bloğu kullanılarak log formatı Json olarak belirtilmelidir:

Log.Logger = new LoggerConfiguration()    .WriteTo.Console()    .WriteTo.File("logs/log.json", rollingInterval: RollingInterval.Day)    .WriteTo.Debug()    .CreateLogger();hostBuilder.ConfigureLogging((context, logging) =>{    logging.ClearProviders();    logging.AddSerilog();});

Yukarıdaki kod bloğunda, logların kaydedileceği dosya yolunun yanı sıra logların konsol ekranına ve debugging panele de yazdırılması belirtilmektedir.

Json formatında loglama yapmanın faydaları oldukça fazla olduğundan, özellikle büyük ölçekli projelerde kullanımı önerilir.


Plain Text Log Formatı

Loglama sırasında kullanılabilen basit bir metin dosyası olarak tanımlanabilen Plain Text Log Formatı, kolay anlaşılabilir bir format olması nedeniyle tercih edilir. Bu format, büyük veri dosyalarının tutulacağı durumlarda verimli bir seçenek olarak göze çarpar.

Plain Text Log Formatı, geliştiricilere düşük maliyetli bir çözüm sunar. Aynı zamanda, verilerin kolayca okunabilirliği ve analizi üzerinde kullanıcıların tam hakimiyeti vardır. Dosya isimleri ve konumları bu format için ayrıca belirtilebilir.

Bu format için loglama işlemi için birkaç farklı seçenek vardır. Bunlardan biri, .txt dosyalarının klasörler içinde saklanmasına dayanan seçeneklerdir. Bu yöntem, kullanıcının dosya isimleri ile ilgili tutarlılık sağlamasını gerektirir.

Bir başka seçenek de, geliştiricilerin logları belirli bir izleme sistemi tarafından toplanan belirli bir dosya türüne göndermesidir. Dosyaların yığınlanması nedeniyle, bu seçenek, büyük miktarlardaki verilerin düzenlenmesi ve analizi için biraz zorlu bir süreç olabilir.

Loglama işleminin doğru bir şekilde gerçekleştirilebilmesi için, Plain Text Log Formatı'nda kullanılacak logların formatı önceden belirlenmiş olmalıdır. Dosyaların isimleri ve konumları da dikkatli bir şekilde seçilmelidir.

Özetlemek gerekirse, Plain Text Log Formatı, geliştiricilerin düşük maliyetli ve kolay anlaşılabilir veri saklama yöntemlerinden biri olarak tercih edebilecekleri bir seçenektir. Kullanıcıların daha küçük projelerde kolaylıkla kullanabilecekleri ve yönetebilecekleri bir loglama yöntemidir.


Logging Yöntemleri ve Uygulamaları

ASP.NET Core uygulamalarında loglama işlemi, uygulamanın hata ya da başarısızlık durumları hakkında bilgi sahibi olmak için oldukça önemlidir. Bu nedenle, farklı loglama yöntemleri kullanılarak logların detaylı bir şekilde raporlanması gerekmektedir.

Konsole logging, en basit loglama yöntemlerinden biridir. Bu yöntem, logların konsol ekranına yazdırılmasını sağlar. Uygulama geliştiricileri, loglama yapmayı kolaylıkla kontrol edebilir ve uygulama hakkında bilgi toplayabilirler.

Debugging Middleware, uygulama geliştiricilerinin uygulama çalıştığı sırada loglama yapmasına olanak tanır. Bu başlık altında kullanılan middleware, uygulamanın çalışması sırasında hata ayıklama veya loglama yapmanıza yardımcı olur.

File logging, logların bir dosyaya yazdırılması olarak tanımlanabilir. Bu yöntem, loglama işlemi için oluşturulan dosyanın boyutu ve içeriği ile ilgili olarak sistem yöneticisi tarafından düzenlenebilir.

Database logging, logging için veritabanının kullanımını içerir. Bu yöntem, veritabanında oluşturulan tablolar aracılığıyla logların kaydedilmesini ve raporlanmasını sağlar. Bununla birlikte, bu yöntem gereksiz yere veritabanı trafiğine neden olabilir ve uygulama performansında bir düşüşe neden olabilir.

ASP.NET Core kullanıcıları, loglama yöntemleri açısından birçok seçeneğe sahiptir. Uygulamanın gereksinimleri, geliştiricilerin tercihi ve sistem yöneticilerinin kullanılan sistem kaynaklarına bağlı olarak farklı yöntemler kullanılabilir.


Console Logging

Console Logging

Console logging, ASP.NET Core uygulamalarında logların konsol ekranına yazdırılması yöntemidir. Bu yöntem ile loglama yapılan işlemler kolayca takip edilebilir ve hata ayıklama sürecinde oldukça faydalıdır.

Console logging kullanmak oldukça kolaydır. Bunun için projenin Startup.cs dosyasındaki Configure() metoduna aşağıdaki kodların eklenmesi yeterlidir:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory){    loggerFactory.AddConsole();    loggerFactory.AddDebug(LogLevel.Trace);     app.UseRouting();     app.UseEndpoints(endpoints =>    {        endpoints.MapControllers();    });}

Yukarıdaki kod bloğunda, AddConsole() metodu ile console logging kullanımı aktif hale getiriliyor. Ardından LogLevel.Trace ile log seviyesi belirlenir. Bu belirtilen seviyede veya daha yüksek seviyede log kayıtları yapılır. Ayrıca AddDebug() metodu ile debug seviyesinde log kayıtları da alınabilir.

Console logging yönteminde logların konsol ekranına yazdırılması için aşağıdaki kod kullanılır:

var loggerFactory = LoggerFactory.Create(builder =>{    builder        .AddConsole();}); ILogger logger = loggerFactory.CreateLogger(); logger.LogInformation("Info log");logger.LogWarning("Warning log");logger.LogError("Error log");

Burada loggerFactory.CreateLogger() metodu ile bir ILogger nesnesi oluşturulur. Bu nesne ile farklı log seviyelerinde log kayıtları yapılabilir. Yukarıdaki kodda, LogInformation() metodu ile Information seviyesinde, LogWarning() metodu ile Warning seviyesinde ve LogError() metodu ile Error seviyesinde log kayıtları yapılır.

Console logging yöntemi, hem başlangıç seviyesindeki projelerde hem de büyük ölçekli uygulamalarda kullanılabilir. Ancak büyük ölçekli uygulamalarda çok sayıda log kaydı yapıldığı için konsol ekranında görüntüleme gereksiz yere zorlaşabilir. Bu durumda logların bir dosyaya veya veritabanına yazdırılması daha uygun olabilir.


Debugging Middleware'ın Kullanımı

ASP.NET Core uygulamaları, Debugging Middleware kullanarak loglama yapabilirler. Debugging Middleware, ASP.NET Core middleware'leri arasında yer alır ve uygulama sırasında herhangi bir hatayla karşılaşıldığında hata hakkında ayrıntılı bilgi sağlamak için kullanılır.

Debugging Middleware, uygulama çalışırken tüm HTTP istekleri ve cevapları izler. Çalışma esnasında Middleware, gelen istek ve cevapların detaylarını tutar, herhangi bir hatayla karşılaşıldığında ise bu hatayı loglama işlemi gerçekleştirir.

Debugging Middleware'ı kullanmak için, Middleware'ın uygulama pipeline'ına eklenmesi gerekmektedir. Bu işlem için Startup.cs dosyasında birkaç basit adımın izlenmesi yeterlidir.

Örneğin, aşağıdaki kod bloğu Debugging Middleware'ını uygulama pipeline'ına ekleyecektir:

```public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory){ //...

app.UseDeveloperExceptionPage(); app.UseMiddleware();

//...}```

Gördüğünüz gibi, UseDeveloperExceptionPage() metodu hatayla karşılaşıldığında kullanıcıya detaylı hata bilgileri sunar, DebuggingMiddleware ise uygulama sırasında herhangi bir hatayla karşılaşıldığında ilgili hatayı loglamak için kullanılır.

Debugging Middleware, uygulama sırasında herhangi bir hatanın yanı sıra, middleware'lerin performansı gibi farklı konularda da detaylı bilgi sağlar. Bu sayede uygulamalarınızın performansını arttırmak ve hataları daha kolay tespit etmek için Middleware'ı kullanabilirsiniz.

Sonuç olarak, Debugging Middleware'ı ASP.NET Core uygulamalarında kullanabilirsiniz. Middleware, uygulamanızda gerçekleşen HTTP istekleri ve cevaplarını izler ve herhangi bir hata durumunda ilgili hatayı loglama işlemi gerçekleştirir. Bu sayede hatalar daha kolay tespit edilebilir ve uygulamanın performansı artırılabilir.


File Logging

File Logging, ASP.NET Core uygulamalarında logların belirtilen bir dosyaya yazdırılması yöntemidir. Bu yöntem, uygulama çalıştığında oluşan hataların, bilgilerin, uyarıların ve diğer tüm log verilerinin belirtilen bir dosyaya kaydedilmesini sağlar.

File Logging'i kullanmak için, öncelikle logların kaydedileceği dosya yolunun belirtilmesi gerekir. Dosya yolunu belirtmek için, appsettings.json dosyasının içinde yer alan "Logging" bölümü kullanılabilir. Örneğin:

{  "Logging": {    "LogLevel": {      "Default": "Information",      "Microsoft": "Warning",      "Microsoft.Hosting.Lifetime": "Information"    },    "File": {      "Path": "logs/log.txt",      "Append": true,      "MaxFileSize": 10485760,      "MaxRollingFiles": 3,      "RollingInterval": "Day"    }  }}

Bu örnekte, logların "/logs/log.txt" dosyasına kaydedileceği belirtilmiştir. Ayrıca, dosyanın günlük olarak düzenli olarak döndürülerek saklanması ve en fazla üç tane yedek dosya oluşturulması sağlanmıştır. Yine burada log dosyası için maksimum dosya boyutu da belirtilmiştir.

File Logging yöntemiyle loglama yapmak, uygulama hata ayıklama sürecinde oldukça faydalı olabilir. Ancak, log dosyasının boyutu hızla artacağından, düzenli olarak log dosyasının arşivlenmesi veya silinmesi gerekebilir.

Bunun yanı sıra, log dosyası analiz ederek, uygulama performansının ve hatalarının nedenlerini incelemek ve iyileştirmek de mümkündür. File Logging, özellikle büyük ölçekli ASP.NET Core uygulamalarında kullanılan en yaygın loglama yöntemidir.


Database Logging

Diğer loglama yöntemleri gibi, Database Logging de ASP.NET Core uygulamalarında kullanılabilen bir yöntemdir. Bu yöntemde, loglar bir veritabanına yazdırılır. Böylece, uygulamanın çalışması sırasında meydana gelen tüm olaylar kaydedilir ve gerektiğinde kullanıcıya sunulabilir. Veritabanına kaydedilen loglar, başka bir yerde kullanılmak, raporlamak ya da analiz etmek için de kullanılabilir.

Database Logging yönteminin kullanımı, uygulama hataları gibi ciddi durumlarda özellikle faydalıdır. Hata durumunda logların tutulması, yapılan hatanın nedenini bulmak ve çözmek için son derece önemlidir. Ayrıca, veritabanına kaydedilen loglar, uygulamanın performansı hakkında da önemli bilgiler içerebilir.

Database Logging kullanımı için, Entity Framework Core'a ihtiyaç vardır. Entity Framework Core, bir ORM (Object-Relational Mapping) aracıdır ve .NET Core ile kullanıldığında, veritabanı erişimi ve işlemleri için birçok kolaylık sağlar. Entity Framework Core, loglama özelliği ile birlikte kullanıldığında, loglar veritabanına otomatik olarak kaydedilebilir. Ayrıca, logları okumak için Entity Framework Core kullanarak sorgular da yazılabilir.

Database Logging yönteminin kullanımı, uygulamanın ihtiyaçlarına ve gerekliliklerine bağlı olarak değişebilir. Bazı uygulamalar için, sadece ciddi hata durumlarında logların kaydedilmesi yeterli olurken, diğer uygulamalarda tüm olayların loglanması gerekebilir.