No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Agregando Logging a API

14/22
Recursos

Aportes 10

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

luego de haber hecho el cambio a “Debug” en el appsettings y no ver los correspondientes logs en la consola, me di cuenta que los cambios no los había hecho en el appsettings.Development.json, pilas con en dónde hacen los ajustes trabajando con estos archivos de configuración por entorno

.Net es simplemente asombroso.

Asi implemente logger en la clase HelloWorldController

using Microsoft.AspNetCore.Mvc;

namespace mywebapi.Controllers;

[ApiController]
[Route("api/v1/[controller]")]
public class HelloWorldController : ControllerBase{

    IHelloWorldService helloWorldService;
    private readonly ILogger<HelloWorldController> _logger;
    public HelloWorldController(ILogger<HelloWorldController> logger,IHelloWorldService helloworld)
    {
        _logger = logger;
        helloWorldService = helloworld;
    }

    public IActionResult Get()
    {
        _logger.LogInformation("Saludando el mundo");
        return Ok(helloWorldService.GetHelloWorld()); 
    }
}

Agregando Logging a API


Agregar logging a una API es importante para tener una visibilidad completa sobre la actividad de la API y para poder solucionar problemas más eficientemente.

private readonly ILogger<WeatherForecastController> _logger;

public IActionResult Post([FromBody] WeatherForecast weatherForecast)
	{
		_logger.LogDebug("Log Al Insertar Data");
		ListWeatherForecast.Add(weatherForecast);
		return Ok();
	}

Algunos de los niveles de registro comúnmente utilizados incluyen:

  • Trace: Información detallada y de diagnóstico que se utiliza principalmente durante la depuración y el desarrollo.
  • Debug: Información adicional que se utiliza durante la depuración y el desarrollo.
  • Information: Información general que puede ser útil para comprender lo que está sucediendo en la aplicación.
  • Warning: Información que indica que algo no está funcionando según lo previsto, pero que no impide el funcionamiento de la aplicación.
  • Error: Información que indica que un error ha ocurrido y que puede afectar el funcionamiento de la aplicación.
  • Critical: Información que indica un error grave que puede impedir el funcionamiento de la aplicación.

Para configurar estos niveles de comunicacion, lo hacemos desde el archivo appsettings.json de la siguiente manera:

"Logging": {
    "LogLevel": {
      "Default": "Debug | Information | Warning",
      "Microsoft.AspNetCore": "Warning"
    }
  },

Reto conseguido con HelloWorld:

using Microsoft.AspNetCore.Mvc;

namespace webapi.Controllers;

[ApiController]
[Route("api/[controller]")]
public class HelloWorldController:  ControllerBase
{
    IHelloWorldService helloWorldService;

    private readonly ILogger<HelloWorldController> _logger;

    public HelloWorldController(IHelloWorldService helloWorld, ILogger<HelloWorldController> logger)
    {
        helloWorldService = helloWorld;
        _logger = logger;
    }

    [HttpGet]
    public IActionResult Get()
    {
        _logger.LogInformation("This is the log for hello world!");
        return Ok(helloWorldService.GetHelloWorld());
    }
}

Comparto mi implementación de logging 😊

using Microsoft.AspNetCore.Mvc;

namespace APIProj.Controllers;

[ApiController]
[Route("api/[controller]")]
public class HelloWorldController : ControllerBase
{
    IHelloWorldService helloWorldService;

    private readonly ILogger<HelloWorldController> _logger;

    public HelloWorldController(IHelloWorldService hw, ILogger<HelloWorldController> logger)
    {
        _logger = logger;
        helloWorldService = hw;
    }
    
    public IActionResult Get()
    {
        _logger.LogDebug("Logging from Get(). Hi!");
        return Ok(helloWorldService.GetHelloWorld());
    }

    [Route("get/bye")]
    public IActionResult GetBye()
    {
        _logger.LogDebug("Saying goodbye @ GetBye()");
        return Ok(helloWorldService.GetByeWorld());
    }
}

Ojo que en la interfaz de IHelloWorldService agregué el método GetBye()

Cual es la diferancia de usar el ILogger parametrizado en el controlador y usar ILoggeFactory?

Aporte de Implementación loggin controller HolaMundo

![](

Asi implemente el Loggin en el HelloWorldController, ademas no olvidar si queremos cambiar el logging hacerlo en archivo development

**public class HelloWorldController : ControllerBase
    {
        private readonly ILogger<HelloWorldController>  _logger;
  
        IHelloWordService helloWordlService;
     
        public HelloWorldController(IHelloWordService  helloWorld, ILogger<HelloWorldController> logger)
        {
            _logger = logger;
            helloWordlService = helloWorld;
        }

        public IActionResult Get()
        {
            _logger.LogDebug("Retorno del Request hello world");
         
            return Ok(helloWordlService.GetHelloWorld());
        }
>

comparto el loggin de helloworld

using Microsoft.AspNetCore.Mvc;


namespace NewApi.Controllers
{

    [ApiController]
    [Route("api/[controller]")]
    public class HelloWorldController : ControllerBase
    {

        private readonly IHelloWorldService helloWorldService;

        public  ILogger<HelloWorldController> _logger;
  

        public HelloWorldController(ILogger<HelloWorldController> logger ,IHelloWorldService helloWorld)
        {
            _logger = logger;
            helloWorldService = helloWorld; 

        }


        [HttpGet]
        public IActionResult Get()
        {
            _logger.LogInformation("Saludando al mundo");
            return Ok(helloWorldService.GetHelloWorld());
        }

    }
}