Skip to content

Fase II Log

Johan Villegas edited this page Sep 18, 2018 · 2 revisions

Puede visualizar los commit de esta fase : Branch Log

API Layer

Para realizar una implementacion de log, debemos entender para que lo necesitamos y con que fin lo vas a utilizar, para ello, en esta practica, vamos a implementarlo para capturar los errores de excepciones y escribirlo en un archivo.

debemos:

  1. Realizar la configuración de captura de excepciones en HttpGlobalExceptionFilter.c**s

SampleException

  1. Vamos a incorporar el paquete Nlog.Web.AspNetCore en nuestro proyecto API. dicho paquete nos facilita la configuración del guardado de los registros.

SampleException

  1. Añadir en la raíz del proyecto, el archivo llamado nlog.config, el cual tiene la configuración de como va a realizar la estructura y la ruta de archivo Log.
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      internalLogLevel="info"
      internalLogFile="c:\temp\internal-nlog.txt">

  <!-- enable asp.net core layout renderers -->
  <extensions>
    <add assembly="NLog.Web.AspNetCore"/>
  </extensions>

  <!-- the targets to write to -->
  <targets>
    <!-- write logs to file  -->
    <target xsi:type="File" name="allfile" fileName="c:\temp\nlog-all-${shortdate}.log"
            layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />

    <!-- another file log, only own logs. Uses some ASP.NET core renderers -->
    <target xsi:type="File" name="ownFile-web" fileName="c:\temp\nlog-own-${shortdate}.log"
            layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
  </targets>

  <!-- rules to map from logger name to target -->
  <rules>
    <!--All logs, including from Microsoft-->
    <logger name="*" minlevel="Trace" writeTo="allfile" />

    <!--Skip non-critical Microsoft logs and so log only own logs-->
    <logger name="Microsoft.*" maxLevel="Info" final="true" />
    <!-- BlackHole without writeTo -->
    <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
  </rules>
</nlog>
  1. Para terminar con el archivo nlog.config debemos ir a las propiedades y asignarle el siguiente valor.

SampleException

  1. ya tenemos configuración de Nlog, pero es necesario para finalizar el proceso, tener presente que la aplicación todavía no lo esta implementando, para eso debemos ir la clase program.cs y realizar lo siguiente.

SampleException

  1. Como podemos ver en el paso 5 el LogLevel utilizar el espacio Trace, que indica mensajes más detallados, vamos al archivo appsettings.json para realizar la actualización.
{
    "Logging": {
        "LogLevel": {
            "Default": "Trace",
            "Microsoft": "Information"
        }
    }
}
  1. Con eso ya podemos realizar una prueba, he ir a la rute C:\temp donde se visualizaran los archivos Log

SampleException