Pacote - Serilog.Sinks.Udp | Plataformas – .NET Framework 4.6.1, .NET Standard 1.3/2.0/2.1
Log4jTextFormatter
Log4netTextFormatter
No exemplo a seguir, o coletor enviará pacotes UDP na rede para localhost na porta 7071.
Serilog . ILogger log = new LoggerConfiguration ( )
. MinimumLevel . Verbose ( )
. WriteTo . Udp ( "localhost" , 7071 , AddressFamily . InterNetwork )
. CreateLogger ( ) ;
Usado em conjunto com Serilog.Settings.Configuration, o coletor pode ser configurado em appsettings.json
.
{
"Serilog" : {
"MinimumLevel" : " Verbose " ,
"WriteTo" : [
{
"Name" : " Udp " ,
"Args" : {
"remoteAddress" : " localhost " ,
"remotePort" : 7071 ,
"family" : " InterNetwork "
}
}
]
}
}
Usado em conjunto com Serilog.Settings.AppSettings o coletor pode ser configurado em XML <appSettings>
.
<? xml version = " 1.0 " encoding = " utf-8 " ?>
< configuration >
< appSettings >
< add key = " serilog:minimum-level " value = " Verbose " />
< add key = " serilog:using:Udp " value = " Serilog.Sinks.Udp " />
< add key = " serilog:write-to:Udp " />
< add key = " serilog:write-to:Udp.remoteAddress " value = " localhost " />
< add key = " serilog:write-to:Udp.remotePort " value = " 7071 " />
< add key = " serilog:write-to:Udp.family " value = " InterNetwork " />
</ appSettings >
</ configuration >
Produzir eventos de log é apenas metade da história. A menos que você os esteja consumindo de uma forma que beneficie seu desenvolvimento ou produção, não há realmente necessidade de produzi-los.
No desenvolvimento, enviei pacotes UDP para o endereço de loopback e usei o Log2Console para visualizá-los. Suporta receptores UDP e permite filtrar e pesquisar de acordo com minhas necessidades.
Levar isso para o próximo nível é quando vocês, como equipe, concordam em enviar os eventos de log para um endereço multicast, tornando-os acessíveis a todos os membros da equipe. Isso pode ser benéfico para o Controle de Qualidade que deseja monitorar eventos de log de todas as instâncias do seu aplicativo em execução.
O formatador de eventos é um modelo de saída com esteróides. Tem a responsabilidade de transformar um único evento de log em uma representação textual. Ele pode serializar o evento de log em JSON, XML ou qualquer outra coisa que corresponda às expectativas do receptor.
O coletor vem pré-carregado com dois formatadores de eventos baseados em XML. Um corresponde ao esquema log4j esperado pelo Log2Console e o outro corresponde ao esquema log4net esperado pelo Log4View.
Log4jTextFormatter
O evento de log é formatado de acordo com o esquema XML log4j esperado pelo Log2Console.
< log4j : event logger = " Some.Serilog.Context " timestamp = " 1184286222308 " level = " ERROR " thread = " 1 " >
< log4j : message >Something failed</ log4j : message >
< log4j : throwable >An exception describing the failure< log4j : throwable >
</ log4j : event >
Log4netTextFormatter
O evento de log é formatado de acordo com o esquema XML log4net esperado pelo Log4View.
< log4net : event logger = " Some.Serilog.Context " timestamp = " 2017-09-01T22:00:00.000+02:00 " level = " DEBUG " thread = " 1 " username = " MACHINEusername " domain = " dotnet " >
< log4net : locationInfo class = " Some.Serilog.Context " method = " System.String Get(Int32) " />
< log4net : properties >
< log4net : data name = " log4net:HostName " value = " MACHINE " />
</ log4net : properties >
< log4net : message >Something went wrong.</ log4net : message >
< log4net : throwable >System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.</ log4net : throwable >
</ log4net : event >
Os aplicativos de exemplo a seguir demonstram o uso desse coletor em vários contextos:
Se quiser incluir o coletor UDP em seu projeto, você poderá instalá-lo diretamente do NuGet.
Para instalar o coletor, execute o seguinte comando no Console do Gerenciador de Pacotes:
PM> Install-Package Serilog.Sinks.Udp
Se este projeto ajudou você a se manter produtivo e economizar dinheiro, você pode me pagar uma xícara de café :)
Obrigado JetBrains por sua importante iniciativa de apoiar a comunidade de código aberto com licenças gratuitas para seus produtos.