Paket - Serilog.Sinks.Udp | Plattformen – .NET Framework 4.6.1, .NET Standard 1.3/2.0/2.1
Log4jTextFormatter
Log4netTextFormatter
Im folgenden Beispiel sendet die Senke UDP-Pakete im Netzwerk an localhost auf Port 7071.
Serilog . ILogger log = new LoggerConfiguration ( )
. MinimumLevel . Verbose ( )
. WriteTo . Udp ( "localhost" , 7071 , AddressFamily . InterNetwork )
. CreateLogger ( ) ;
In Verbindung mit Serilog.Settings.Configuration kann die Senke in appsettings.json
konfiguriert werden.
{
"Serilog" : {
"MinimumLevel" : " Verbose " ,
"WriteTo" : [
{
"Name" : " Udp " ,
"Args" : {
"remoteAddress" : " localhost " ,
"remotePort" : 7071 ,
"family" : " InterNetwork "
}
}
]
}
}
In Verbindung mit Serilog.Settings.AppSettings kann die Senke in XML <appSettings>
konfiguriert werden.
<? 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 >
Das Erstellen von Protokollereignissen ist nur die halbe Miete. Sofern Sie sie nicht in einer Angelegenheit verbrauchen, die Ihnen in der Entwicklung oder Produktion zugute kommt, besteht überhaupt keine Notwendigkeit, sie überhaupt zu produzieren.
In der Entwicklung habe ich UDP-Pakete an die Loopback-Adresse gesendet und Log2Console verwendet, um sie zu visualisieren. Es unterstützt UDP-Empfänger und ermöglicht mir das Filtern und Suchen entsprechend meinen Anforderungen.
Die nächste Stufe erreichen Sie, wenn Sie sich als Team darauf einigen, die Protokollereignisse an eine Multicast-Adresse zu senden und sie so für alle Teammitglieder zugänglich zu machen. Dies kann für die Qualitätssicherung von Vorteil sein, die Protokollereignisse aller Instanzen Ihrer laufenden Anwendung überwachen möchte.
Der Ereignisformatierer ist eine Ausgabevorlage für Steroide. Es hat die Aufgabe, ein einzelnes Protokollereignis in eine Textdarstellung umzuwandeln. Es kann das Protokollereignis in JSON, XML oder irgendetwas anderes serialisieren, das den Erwartungen des Empfängers entspricht.
Die Senke ist mit zwei XML-basierten Ereignisformatierern vorinstalliert. Eines entspricht dem von Log2Console erwarteten log4j-Schema und das andere entspricht dem von Log4View erwarteten log4net-Schema.
Log4jTextFormatter
Das Protokollereignis wird gemäß dem von Log2Console erwarteten log4j-XML-Schema formatiert.
< 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
Das Protokollereignis wird gemäß dem von Log4View erwarteten log4net-XML-Schema formatiert.
< 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 >
Die folgenden Beispielanwendungen veranschaulichen die Verwendung dieser Senke in verschiedenen Kontexten:
Wenn Sie die UDP-Senke in Ihr Projekt einbinden möchten, können Sie sie direkt von NuGet aus installieren.
Um die Senke zu installieren, führen Sie den folgenden Befehl in der Paket-Manager-Konsole aus:
PM> Install-Package Serilog.Sinks.Udp
Wenn Ihnen dieses Projekt geholfen hat, produktiv zu bleiben und Geld zu sparen, können Sie mir eine Tasse Kaffee spendieren :)
Vielen Dank, JetBrains, für Ihre wichtige Initiative, die Open-Source-Community mit kostenlosen Lizenzen für Ihre Produkte zu unterstützen.