.NET MAUI: Sacando partido a MauiBuilder Parte I
- Miguel Angel Barrera
- 14 jul 2022
- 2 Min. de lectura
Actualizado: 30 ago 2023
Con la llegada de .NET MAUI y .net6 se abre un mundo de posibilidades. Vamos a explorar una las funciones más interesantes, el uso del Host para configuraciones.
El uso de un Host es común en proyectos ASPNET. Nos permite de forma sencilla y unificada configurar diferentes aspectos de nuestra aplicación. Si vienes del mundo web, seguro que te suena y sabes todas las posibilidades que el Host aporta, pero en .NET MAUI es un concepto nuevo y puede que no sepas sacarle todo el partido.

Vamos a ir viendo cómo podemos usar el Host para realizar ciertas configuraciones básicas en cualquier aplicación que estemos desarrollando.
Usar un Logger
Es prioritario saber que ocurre en nuestra aplicación, tanto en desarrollo como para consultarlo a posteriori y detectar fallos y cómo solucionarlos. Es por eso que es imprescindible usar un Logger.
Serilog es el logger más usado por la comunidad y es realmente flexible.
Integrando Serilog en .NET MAUI
Primero debes instalar tres paquetes NuGet.
Serilog
Serilog.Extensions.Logging
Serilog.Sinks.Console
El primer paquete nos permite usar Serilog.
El segundo paquete nos permite registrar serilog en el Logger de nuestro Host en .NET MAUI.
Y el tercero es un Sinks. Es uno de los puntos fuertes de Serilog, nos permite definir donde y como se van a escribir nuestros eventos. Este que estamos usando es para que escriba en la consola.
En nuestra clase MauiProgram, creamos un método de extensión del MauiAppBuilder:
private static MauiAppBuilder AddSerilog(this MauiAppBuilder appBuilder)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.Enrich.FromLogContext()
.WriteTo.Console()
.CreateLogger();
appBuilder.Logging.AddSerilog();
return appBuilder;
}
Si nos fijamos, creamos una configuración de Serilog, con un nivel mínimo de Log en Verbose, y le decimos que imprima por consola los eventos que registremos.
Luego lo añadimos al logger del MauiAppBuilder para que lo registre en el inyector de dependencias y tenerlo disponible en nuestra app.
Ahora usamos el método (AddSerilog) anterior en el método CreateMauiApp():
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.AddSerilog()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
return builder.Build();
}
Usa el logger
Ya tenemos el logger registrado en el inyector de dependencias y con la configuración que le hemos definido.
Ahora solo nos queda usarlo. Para usarlo solo tenemos que solicitarle al inyector de dependencias una instancia del ILogger.
public class TestNetworkService
{
private readonly ILogger<TestNetworkService> logger;
public TestNetworkService(
ILogger<TestNetworkService> logger)
{
this.logger = logger;
this.logger.LogInformation("I am using serilog");
}
}
Más posibilidades con Serilog
Como has visto, Serilog, es muy fácil de configurar. Como he comentado antes, es muy flexible, también nos permite escribir estos logs en ficheros, o registrarlos en plataformas de análisis. Echale un ojo a todos los sinks disponibles: https://github.com/serilog/serilog/wiki/Provided-Sinks
Comments