NLog com destino Seq - um ficheiro de log centralizado



O Seq foi criado para o log estruturado moderno com templates, os modelos de mensagens. Nada de perder tempo e esforço a extrair dados de logs de texto sem formatação com análise de log frágil; as propriedades associadas a cada evento de log são capturadas e enviadas para o Seq em formato JSON.

Por outro lado, 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 e suporta a criação de destinos customizados.

Para usar o Seq com NLog há que instalar primeiro o pacote Nuget NLog.Targets.Seq.
PM> Install-Package NLog.Targets.Seq

Depois disto, adicionar a referência para a assembly à configuração do NLog
<nlog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.nlog-project.org/schemas/NLog.xsd">

  <extensions>
    <add assembly="NLog.Targets.Seq"/>
  </extensions>
</nlog>
,adicionar o novo target, o destino,
<target name="seq" xsi:type="BufferingWrapper" bufferSize="1000" flushTimeout="2000" slidingTimeout="false">         <target xsi:type="Seq" serverUrl="http://localhost:5341" apiKey="" />  </target>
e estabelecer as regras de aplicação do novo destino de escrita para log
<rules>
  <logger name="*" minlevel="Info" writeTo="seq" />
  [...] </rules>

Ilustração do exemplo do artigo NLog: logging mais fácil aplicado ao ficheiro de log centralizado Seq.



Exemplo de configuração para um Seq mais rico, para auditoria
<target name="seq" xsi:type="BufferingWrapper" bufferSize="1000" flushTimeout="2000" slidingTimeout="false">
<target xsi:type="Seq" serverUrl="http://localhost:5341" apiKey="" >
<property name="ThreadId" value="${threadid}" as="number" />
<property name="MachineName" value="${machinename}" />
<property name="UserName" value="${windows-identity}" />
<property name="ID" value="${guid:GeneratedFromLogEvent=true}"/>
<property name="Source" value="${callsite}"/>
<property name="Time" value="${longdate}"/>
<property name="Agent" value="${environment-user}"/>
<property name="Level" value="${uppercase:${level}}"/>
<property name="Count" value="${sequenceid}"/>
</target>
</target>

fontes: https://blog.datalust.co/nlog-4-5-structured-logging/,
https://github.com/datalust/nlog-targets-seq

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

Sem comentários:

Com tecnologia do Blogger.