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 鈥淒ebug鈥 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());
        }

    }
}