3 Ekim 2023 Salı

Asp.Net 6 Projelerinde Log Yapısnın Eklenmesi

 Merhaba Arkadaşlar,

Asp.net core 6 ile geliştirdiğimiz bir projenin production'a çıktığında yani kullanıcılar tarafında kullanıma açıldığında buradaki yaşanan hatalı senaryoların kaydını tutmak gerekir ki bu bugfix aşamasında çok büyük önem taşımaktadır. Bu aşamada yapabileceğimiz kullanabileceğimiz log yapısını projemize eklemek için proje tarafında bazı konfigurasyonlar yapmak gerekecektir. 


Sırasıyla yapmamız gerekenleri aşağıdaki sırayla yapabiliriz.

Projemiz içerisindeki appsetting.json içerisine aşağıdaki gibi bir ayarlama yapmamız gerekir. Loglarında önem sırasını değiştirebileceğimiz ve hatalı olması durumundaki hataları loglamamız gerekiyorsa bu durumda bunu LogSettings içerisindeki LogLevel'da belirtebiliriz. Aşağıdaki örnekte sadece Error ve Info durumundaki logları yazmasını sağlamış olacağız.

appsettings.json

{

  "Logging": {

    "LogLevel": {

      "Default": "Error",

      "Microsoft.AspNetCore": "Warning",

      "IsBilge": "Information"

    }

  },

  "LogSettings": {

    "LogLevel": [ "Error", "Info" ]

  }

}


Log Ayarları için LogSettings.cs'i ekledik projemize ve kodlarınız aşağıdaki gibi yazdım.

   public class LogSettings

    {

        public List<string> LogLevel { get; set; }

    }


Log yapısını kullanabileceğimiz LogSettings'i de içerisinde barındıran LogService.cs yapısını ekledim.

    public class LogService

    {

        private readonly LogSettings _settings;

        public LogService(IOptions<LogSettings> settings)

        {

            _settings = settings.Value;

        }

        public List<string> GetLogLevel()

        {

            return _settings.LogLevel;

        }

     public void Log(string logFilePath, string log,string type)

        {

            string okunan = ""; //içine configten gelen değer ya da değerler gelecek.

            if (okunan.Contains(type)){

                System.IO.File.AppendAllText(logFilePath, log);

            }           

        }

    }

Program.cs içerisine aşağıdaki kodlarla register etmemiz gerekecektir.

var builder = WebApplication.CreateBuilder(args);

builder.Services.Configure<LogSettings>(builder.Configuration.GetSection("LogSettings"));

builder.Services.AddScoped<LogService>(); // MyService sınıfınızı ekleyin

builder.Services.AddControllersWithViews();


Sıra geldi log yazmak istediğimiz Controller içerisindeki ilgili metotta bunları kullanmaya. 


    public class HomeController : Controller

    {        

        private readonly LogSettings_settings;

        private readonly LogService_myService;


        public HomeController(ILogger<HomeController> logger, LogService service, IOptions<LogSettings> settings)

        {

            _logger = logger;

            _settings = settings.Value;

            _myService = service;

        }

        public IActionResult Index()

        {

            _myService. Log(logFilePath, "bilgi amaçlıdır", "Info");

           _myService. Log(logFilePath, "hata var, "Error");

            return View();

        }

}

Log projedeki sıkıntılı durumları görmenizi sağladığı gibi kullanılma oranını da görmenize yardımcı olacaktir.

Log hayat kurtarır :)

İyi Çalışmalar,


SQL Çalışma Sorularının Çözümü

 -Ürünler tablosundaki ürünlerden Rengi siyah,silver ya da multi renkte olanları fiyat bilgisine göre büyükten küçüğe getirilip gösterilecek...