แพ็คเกจ - Serilog.Sinks.Udp | แพลตฟอร์ม - .NET Framework 4.6.1, .NET Standard 1.3/2.0/2.1
Log4jTextFormatter
Log4netTextFormatter
ในตัวอย่างต่อไปนี้ sink จะส่งแพ็คเกจ UDP บนเครือข่ายไปยัง localhost บนพอร์ต 7071
Serilog . ILogger log = new LoggerConfiguration ( )
. MinimumLevel . Verbose ( )
. WriteTo . Udp ( "localhost" , 7071 , AddressFamily . InterNetwork )
. CreateLogger ( ) ;
ใช้ร่วมกับ Serilog.Settings.Configuration สามารถกำหนดค่า sink ได้ใน appsettings.json
{
"Serilog" : {
"MinimumLevel" : " Verbose " ,
"WriteTo" : [
{
"Name" : " Udp " ,
"Args" : {
"remoteAddress" : " localhost " ,
"remotePort" : 7071 ,
"family" : " InterNetwork "
}
}
]
}
}
เมื่อใช้ร่วมกับ Serilog.Settings.AppSettings sink สามารถกำหนดค่าได้ใน 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 หรือสิ่งอื่นใดที่ตรงกับความคาดหวังของผู้รับ
Sink มีการโหลดล่วงหน้าด้วยตัวจัดรูปแบบเหตุการณ์ที่ใช้ 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 >
แอปพลิเคชันตัวอย่างต่อไปนี้สาธิตการใช้งาน sink นี้ในบริบทต่างๆ:
หากคุณต้องการรวม UDP sink ในโปรเจ็กต์ของคุณ คุณสามารถติดตั้งได้โดยตรงจาก NuGet
ในการติดตั้ง sink ให้รันคำสั่งต่อไปนี้ใน Package Manager Console:
PM> Install-Package Serilog.Sinks.Udp
หากโครงการนี้ช่วยให้คุณมีประสิทธิผลและประหยัดเงิน คุณสามารถซื้อกาแฟให้ฉันสักแก้ว :)
ขอขอบคุณ JetBrains สำหรับความคิดริเริ่มที่สำคัญของคุณในการสนับสนุนชุมชนโอเพ่นซอร์สด้วยใบอนุญาตฟรีสำหรับผลิตภัณฑ์ของคุณ