Пакет — 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
Событие журнала форматируется в соответствии со схемой XML log4j, ожидаемой 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
Событие журнала форматируется в соответствии со схемой XML log4net, ожидаемой 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 за вашу важную инициативу по поддержке сообщества открытого исходного кода бесплатными лицензиями на ваши продукты.