Yüksek Performans Loglama Nasıl Yapılır?

Asp.Net Core uygulamanızda Microsoftun önerdiği best practicelerden yararlanmak en iyi seçenek gibi duruyor.

Bende Bu makalemde size nasıl yüksek performanslı loglama yapmanız gerektiğinden bahsedicem.

Kendi log sisteminizi yazarken unutulmaması gerekenlerden biride loglama yaparken sistemi yormamaya gayret göstermektir. Bu yüzden Loggerımız için extension metod yazarken delegate fonksiyonlarımızdan yardım alıcaz.

sing System;
using Microsoft.Extensions.Logging;

namespace LoggerMessageSample.Internal
{
    public static class LoggerExtensions
    {
//Burada string property tanımımızı yapıyoruz
       private static readonly Action<ILogger, string, Exception> _logAdded;
       private static readonly Action<ILogger, string, Exception> _logErrorAdded;

    static LoggerExtensions()
    {
        _logAdded = LoggerMessage.Define<string>(
        LogLevel.Information, 
        new EventId(2, nameof(CustomLogInfo)), 
        "Custom Log Eklendi (Mesajiniz = '{Mesaj}')");

        _logErrorAdded = LoggerMessage.Define<string>(
        LogLevel.Error, 
        new EventId(2, nameof(CustomLogInfo)), 
        "Custom Error Log Eklendi (Mesajiniz = '{Mesaj}')");
    }

    public static void CustomLogInfo(this ILogger logger, string mesaj)
    {
        _logAdded(logger, mesaj, null);
    }

    public static void CustomLogError(this ILogger logger, string mesaj,Exception ex)
    {
        _logErrorAdded(logger, mesaj, ex);
    }
}

Yukarıda basit olarak kendi yüksek performans log extensionunuzu nasıl yazabileceğizi gösterdim.Aşağıdaki örnekte kullanmak istediğiniz log extesionunu controllerınızda nasıl kullanabileceğinizi görebilirisiniz.

Yüksek Performan Loglama Nasıl Kullanılır?

namespace CustomLog.API.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class CustomContoller: ControllerBase
    {
       private readonly  ILogger<CustomContoller> _logger;

    public CustomContoller(ILogger<CustomContoller> logger){
       _logger = logger;
    }

     [HttpGet("LogTest")]
     public async Task<IActionResult> LogTest(){
        try{
           _logger.CustomLogInfo("Loglama Yapıldı");
           return Ok();
        }catch(Exception ex){
           _logger.CustomLogError("Exception Loglama Yapıldı", ex);
        }
     }
}
     

Daha detaylı bilgi için kaynakta paylaştığım Microsoft‘un kendi sitesini ziyaret edebilirsiniz.

Kaynak : Microsoft

Cevap Ver

Lütfen yorumunuzu yazınız!
Lütfen isminizi buraya giriniz