الحزمة - Serilog.Sinks.Udp | الأنظمة الأساسية - .NET Framework 4.6.1، .NET Standard 1.3/2.0/2.1
Log4jTextFormatter
Log4netTextFormatter
في المثال التالي، سيرسل الحوض حزم UDP الموجودة على الشبكة إلى المضيف المحلي على المنفذ 7071.
Serilog . ILogger log = new LoggerConfiguration ( )
. MinimumLevel . Verbose ( )
. WriteTo . Udp ( "localhost" , 7071 , AddressFamily . InterNetwork )
. CreateLogger ( ) ;
يُستخدم مع Serilog.Settings.Configuration ويمكن تكوين الحوض في appsettings.json
.
{
"Serilog" : {
"MinimumLevel" : " Verbose " ,
"WriteTo" : [
{
"Name" : " Udp " ,
"Args" : {
"remoteAddress" : " localhost " ,
"remotePort" : 7071 ,
"family" : " InterNetwork "
}
}
]
}
}
يمكن تهيئة الحوض عند استخدامه مع Serilog.Settings.AppSettings في 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 >
إن إنتاج أحداث السجل هو نصف القصة فقط. إلا إذا كنت تستهلكها فيما يعود عليك بالنفع في التطوير أو الإنتاج، فلا داعي فعلاً لإنتاجها أصلاً.
أثناء التطوير، قمت بإرسال حزم UDP إلى عنوان الاسترجاع، واستخدمت Log2Console لتصورها. وهو يدعم أجهزة استقبال UDP، ويسمح لي بالتصفية والبحث وفقًا لاحتياجاتي.
يتم الانتقال إلى المستوى التالي عندما توافق كفريق على إرسال أحداث السجل إلى عنوان بث متعدد، مما يجعلها في متناول جميع أعضاء الفريق. يمكن أن يكون هذا مفيدًا لضمان الجودة الذي يرغب في مراقبة أحداث السجل من جميع مثيلات التطبيق قيد التشغيل.
منسق الحدث هو قالب إخراج على المنشطات. تقع على عاتقها مسؤولية تحويل حدث سجل واحد إلى تمثيل نصي. يمكنه إجراء تسلسل لحدث السجل في JSON أو XML أو أي شيء آخر يتوافق مع توقعات المتلقي.
يأتي الحوض محملاً مسبقًا بمنسقين للأحداث يعتمدان على XML. أحدهما يطابق مخطط log4j المتوقع بواسطة Log2Console والآخر يطابق مخطط log4net المتوقع بواسطة Log4View.
Log4jTextFormatter
يتم تنسيق حدث السجل وفقًا لمخطط log4j XML المتوقع بواسطة 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
يتم تنسيق حدث السجل وفقًا لمخطط log4net XML المتوقع بواسطة 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 >
توضح نماذج التطبيقات التالية استخدام هذا الحوض في سياقات مختلفة:
إذا كنت تريد تضمين مخزن UDP في مشروعك، فيمكنك تثبيته مباشرةً من NuGet.
لتثبيت الحوض، قم بتشغيل الأمر التالي في وحدة تحكم إدارة الحزم:
PM> Install-Package Serilog.Sinks.Udp
إذا كان هذا المشروع قد ساعدك على الحفاظ على إنتاجيتك وتوفير المال، يمكنك أن تشتري لي فنجانًا من القهوة :)
شكرًا لك JetBrains على مبادرتك المهمة لدعم مجتمع المصادر المفتوحة بتراخيص مجانية لمنتجاتك.