Utilizar Serilog en ASP .Net Core

En estos días he estado aprendiendo cómo desarrollar un Bot para Skype utilizando la API REST del Microsoft Bot Framework.

Resulta que, simplificando, los bots, no son más que una aplicación web con la capacidad de responder a determinadas peticiones, así que decidí crear uno utilizando ASP .Net Core. Una vez que lo desplegué en Azure me topé con el típico problema que “solo” ocurre en el servidor.

Por tanto, tuve que activar un mecanismo de logging que escribiera en un fichero el error para poder determinar el origen del problema.

Esta vez opté por probar suerte con Serilog, y como con mucho de lo que se hace hoy en .Net Core tuve que dar con la combinación de dependencias y código para que el proyecto compilara y luego generara el fichero de forma adecuada.

Así que en base a mi experiencia, aquí os dejo los pasos a seguir para utilizar Serilog en ASP .Net Core:

1.- Modificar el fichero project.jon para agregar las siguientes dependencias:

    "Serilog": "2.2.0",
    "Serilog.Extensions.Logging": "1.2.0",
    "Serilog.Sinks.RollingFile": "2.0.0",
    "Serilog.Sinks.File": "3.0.0"

2.- Agregar las siguientes líneas al constructor de la clase Startup:

    Log.Logger = new LoggerConfiguration()
        .MinimumLevel.Debug()
        .WriteTo.RollingFile(Path.Combine(env.ContentRootPath, "log-{Date}.txt"))
        .CreateLogger();

3.- Agregar la siguiente línea en el método Configure de la clase Startup

    loggerFactory.AddSerilog();

5.- Finalmente inyecta en el constructor del controlador o servicio el logger para poder utilizarlo, como en el siguiente ejemplo:

    public class Chat : IChat
    {
        // Instancia del logger
        ILogger logger;

        // Injectamos el logger en el constructor
        public Chat(ILogger logger)
        {
            this.logger = logger;
        }

        // Método de envío de los mensajes
        public virtual void SendMessage(string message)
        {
            try
            {
                // Envío de Mensaje
            }
            catch (System.Exception ex)
            {
                // Enviamos al log los errores.
                this.logger.LogError(ex.Message);
            }
        }
    }

Espero os sea de ayuda!

Descubre cómo desde SOGETI te ayudamos al desarrollo de poyectos IT adaptados a tus necesidades.

Carlos-Mendible

 

Carlos Mendible con más de 14 años de experiencia diseñando e implementado soluciones de software, comenzó su carrera en Venezuela, donde en 1999 obtuvo su primera certificación Microsoft. Actualmente está certificado como CISA, ITILF, MCSD, MCTS y MCP. Trabaja desde 2012 como Arquitecto Senior de Soluciones Microsoft en SOGETI España colaborando también como evangelista tecnológico, formador e ingeniero de pre-venta.

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s