Inyección de dependencias en .NET: ILogger
Clase 11 de 21 • Curso de APIs con .NET
Contenido del curso
Estructura de una Web API
- 7

Configuración CORS en .NET: solución al error
07:08 min - 8

Rutas en APIs .NET con parámetros
12:50 min - 9

Documentación de APIs con OpenAPI y Swagger en .NET
14:25 min - 10

Middlewares en ASP.NET: pipeline y custom middleware
10:32 min - 11

Inyección de dependencias en .NET: ILogger
Viendo ahora - 12

Middleware para autenticación básica en .NET
08:17 min
Arquitectura y Middlewares
- 13

Configuración de Entity Framework Core en .NET
07:31 min - 14

Modelos C# y relaciones con Entity Framework
10:01 min - 15

Servicios con Entity Framework para ASP.NET
13:51 min - 16

Controladores API en .NET con Swagger
14:46 min - 17

Conectar API .NET con SQL Server
09:51 min - 18

Conectar .NET API con PostgreSQL usando Entity Framework
06:57 min - 19

Qué es Clean Architecture en .NET
09:08 min - 20

Pruebas unitarias en .NET con Copilot
09:05 min - 21

Qué sigue después de tu API con .NET
02:16 min
Domina la inyección de dependencias y el logging en .NET con una implementación simple y efectiva. Aprenderás a configurar el servicio, inyectar el ILogger en tu controller o método, y ajustar los niveles de logging en appsettings.json para ver exactamente lo que necesitas en consola.
¿Qué resuelven la inyección de dependencias y el logging en .NET?
La inyección de dependencias te entrega objetos ya configurados sin crearlos manualmente. Evita usar new dentro de las clases para no acoplar implementaciones ni romper pruebas. Con logging, registras información clave de ejecución y errores según el nivel configurado.
- ILogger inyectado llega listo para usar en el controller.
- No instancies manualmente: evita new Logger porque limita reemplazos y mocks en pruebas.
- Plantilla de .NET ya incluye el servicio de logging y puedes inyectarlo donde lo necesites.
¿Cómo se configura el servicio de logging?
- Agrega la configuración de servicios de logging en el archivo de inicio del proyecto (Program): ya viene incluida en la plantilla.
- Con esa configuración, puedes inyectar el servicio en controladores o clases de la Web API.
¿Cómo inyectar ILogger desde el constructor o como parámetro?
- Constructor: recibes el ILogger
y lo guardas en una variable local.
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger; // inyección por constructor.
}
[HttpGet]
public IActionResult Get()
{
_logger.LogInformation("Returning list of weather forecasts");
return Ok();
}
}
- Parámetro del método: inyectas con el atributo FromServices sin usar el constructor.
[HttpGet]
public IActionResult Get([FromServices] ILogger<WeatherForecastController> logger)
{
logger.LogInformation("Returning list of weather forecasts");
return Ok();
}
¿Por qué evitar new Logger y preferir la inyección?
- Crear instancias con new obliga a repetir código y acopla la implementación.
- No podrás reemplazar por un mock en pruebas unitarias.
- La inyección entrega objetos configurados y reutilizables en todo el proyecto.
¿Cómo controlar los niveles de logging en appsettings?
El logging se controla desde appsettings.json (y puedes especificarlo por ambiente, por ejemplo, Development). Según el nivel, se mostrarán más o menos mensajes en consola.
{
"Logging": {
"LogLevel": {
"Default": "Error"
}
}
}
¿Qué muestra cada nivel de logging?
- critical: muestra solo errores críticos.
- error: muestra errores.
- information: muestra información, errores y critical.
- trace: muestra todo: trace, warning, information, error, debug y critical.
¿Cómo afecta la configuración al resultado en consola?
- Si configuras error, un
LogInformation(...)no se mostrará. - Cambia a
LogError(...)y sí aparecerá porque coincide con el nivel configurado. - El middleware puede seguir registrando según su propia configuración.
¿Cómo comprobar el logging desde un archivo HTTP?
- Ejecuta el proyecto y lanza un request desde tu archivo .http.
- Con
LogInformation("Returning list of weather forecasts"), verás el mensaje cuando el nivel lo permita. - Cambia el nivel y repite la prueba para validar el comportamiento.
¿Qué reto práctico ayuda a dominar estos conceptos?
Ponte manos a la obra para fijar el aprendizaje con APIs con .NET.
- Agrega logging en todos los endpoints de WeatherForecast.
- Crea tu propia clase de servicio, por ejemplo, LoggingAPI.
- Configura la inyección en Program con el servicio de logging.
- Recibe la dependencia en el controller de WeatherForecast.
- Verifica resultados cambiando los niveles en appsettings.json.
¿Te quedó alguna duda o quieres compartir tu implementación? Escribe tus preguntas y comenta tus resultados.