NLog: logging mais fácil


O NLog é uma plataforma de log para .NET, NETSTANDARD, Xamarin e Silverlight. O NLog torna mais fácil a produção e gestão de logs de alta qualidade para qualquer aplicação, independentemente do tamanho ou complexidade.

Características de Destaque
O NLog pode escrever cada mensagem de log dinamicamente para um ou vários destinos em simultâneo. Existem também destinos wrapper que permitem buffering, load balacing, situações de failover e escrita assíncrona.

O NLog pode processar mensagens de diagnóstico em qualquer linguagem .NET, formatadas e enviadas para várias saídas de destino. A lista de destinos está explanada na wiki. Ficheiro, Consola, Base de Dados, E-mail, Log de Eventos e ASP.NET trace são os destinos mais utilizados. Esta plataforma suporta a criação de destinos customizados.

A configuração pode ser feita tanto por ficheiro .config como programaticamente

Instalação
Instalação com pacote NuGet
PM> Install-Package NLog.Config

Para instalação manual, seguir as instruções aqui.

Exemplo de Utilização
Exemplo de NLog.config
<?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"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="false"
      internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">

  <variable name="logDirectory" value="${basedir}/logs"/>

  <!--
  See https://github.com/nlog/nlog/wiki/Configuration-file
  for information on customizing logging rules and outputs.
   -->
  <targets>

    <target name="console" xsi:type="ColoredConsole"
      layout="${date:format=HH\:mm\:ss}|${level}|${stacktrace}|${message}" />
      
    <target name="async" xsi:type="AsyncWrapper" queueLimit="5000" overflowAction="Discard">
        <target xsi:type="File" name="f" fileName="${logDirectory}/${shortdate}.log"
            layout="${longdate} ${uppercase:${level}} ${message}" keepFileOpen="false" encoding="UTF-16" />
    </target>
  
  </targets>

  <rules>
    <logger name="*" minlevel="Debug" writeTo="async" />
    <logger name="*" levels="Info,Warn" writeTo="console" />
  </rules>
</nlog>

Exemplo de classe com escrita para log com a biblioteca NLog
using NLog;
using System;

namespace logging.app.NLog
{
    class Program
    {
        //It is advised to create one (private static) Logger per class.
        private static Logger logger = LogManager.GetCurrentClassLogger();

        static void Main(string[] args)
        {

            int k = 42;
            int l = 100;

            logger.Trace("Sample trace message, k={0}, l={1}", k, l);
            logger.Debug("Sample debug message, k={0}, l={1}", k, l);
            logger.Info("Sample informational message, k={0}, l={1}", k, l);
            logger.Warn("Sample warning message, k={0}, l={1}", k, l);
            logger.Error("Sample error message, k={0}, l={1}", k, l);
            logger.Fatal("Sample fatal error message, k={0}, l={1}", k, l);
            logger.Log(LogLevel.Info, "Sample informational message, k={0}, l={1}", k, l);

            Console.ReadLine();
        }
    }
}

Outputs Produzidos



Escrita para consola


Escrita para consola

Escrita para ficheiro


Escrita para ficheiro









Bootstrap Slider








Referência: Projecto NLog




Licença CC BY-SA 4.0 Silvia Pinhão Lopes, 25.10.17
Print Friendly and PDF

Sem comentários:

Com tecnologia do Blogger.