حوض Serilog الذي يرسل الأحداث ويسجل على الفور إلى Datadog. بشكل افتراضي ، يرسل الحوض سجلات عبر https
حزمة - serilog.sinks.datadog.logs | منصات - .NET 4.5 ، .NET 4.6.1 ، .NET 4.7.2 ، NetStandard1.3 ، NetStandard2.0
ملاحظة: بالنسبة للإصدارات الأخرى .NET ، تأكد من أن إصدار TLS الافتراضي المستخدم هو 1.2
using ( var log = new LoggerConfiguration ( )
. WriteTo . DatadogLogs ( " <API_KEY> " )
. CreateLogger ( ) )
{
// Some code
} بشكل افتراضي ، يتم إعادة توجيه السجلات إلى DataDog عبر HTTPS على المنفذ 443 إلى موقع الولايات المتحدة. يمكنك تغيير الموقع إلى الاتحاد الأوروبي باستخدام خاصية url وتعيينه على https://http-intake.logs.datadoghq.eu .
يمكنك تجاوز السلوك الافتراضي واستخدام إعادة توجيه TCP عن طريق تحديد الخصائص التالية يدويًا (URL ، PORT ، USESSL ، USETCP).
يمكنك أيضًا إضافة الخصائص التالية (المصدر ، الخدمة ، المضيف ، العلامات) إلى Serilog Sink.
var config = new DatadogConfiguration ( url : " intake.logs.datadoghq.com " , port : 10516 , useSSL : true , useTCP : true ) ;
using ( var log = new LoggerConfiguration ( )
. WriteTo . DatadogLogs (
" <API_KEY> " ,
source : " <SOURCE_NAME> " ,
service : " <SERVICE_NAME> " ,
host : " <HOST_NAME> " ,
tags : new string [ ] { " <TAG_1>:<VALUE_1> " , " <TAG_2>:<VALUE_2> " } ,
configuration : config
)
. CreateLogger ( ) )
{
// Some code
} إرسال السجل التالي:
using ( var log = new LoggerConfiguration ( )
. WriteTo . DatadogLogs ( " <API_KEY> " )
. CreateLogger ( ) )
{
// An example
var position = new { Latitude = 25 , Longitude = 134 } ;
var elapsedMs = 34 ;
log . Information ( " Processed {@Position} in {Elapsed:000} ms. " , position , elapsedMs ) ;
}أو
Log . Logger = new LoggerConfiguration ( )
. WriteTo . DatadogLogs ( " <API_KEY> " )
. CreateLogger ( ) ;
// An example
var position = new { Latitude = 25 , Longitude = 134 } ;
var elapsedMs = 34 ;
Log . Information ( " Processed {@Position} in {Elapsed:000} ms. " , position , elapsedMs ) ;
Log . CloseAndFlush ( ) ;في النظام الأساسي ، يشبه السجل ككائن JSON التالي:
{
"message" : " Processed { Latitude: 25, Longitude: 134 } in 034 ms. " ,
"MessageTemplate" : " Processed {@Position} in {Elapsed:000} ms. " ,
"timestamp" : " 2022-11-23T09:48:56.0262350-05:00 " ,
"level" : " Information " ,
"Properties" : {
"Position" : {
"Latitude" : 25 ,
"Longitude" : 134
},
"Elapsed" : 34
},
"Renderings" : [
" 034 "
]
}appsettings.json منذ 0.2.0 ، يمكنك تكوين حوض DataDog باستخدام ملف appsettings.json مع حزمة serilog.settings.configuration.
في صفيف "Serilog.WriteTo" ، أضف إدخالًا لـ DatadogLogs . يظهر مثال أدناه:
"Serilog" : {
"Using" : [ " Serilog.Sinks.Console " , " Serilog.Sinks.Datadog.Logs " ],
"MinimumLevel" : " Debug " ,
"WriteTo" : [
{ "Name" : " Console " },
{
"Name" : " DatadogLogs " ,
"Args" : {
"apiKey" : " <API_KEY> " ,
"source" : " <SOURCE_NAME> " ,
"host" : " <HOST_NAME> " ,
"tags" : [ " <TAG_1>:<VALUE_1> " , " <TAG_2>:<VALUE_2> " ],
"configuration" : {
"url" : " intake.logs.datadoghq.com " ,
"port" : 10516 ,
"useSSL" : true ,
"useTCP" : true
}
}
}
],
"Enrich" : [ " FromLogContext " , " WithMachineName " , " WithThreadId " ],
"Properties" : {
"Application" : " Sample "
}
} ملاحظة: يعد قسم configuration اختياريًا بحيث يمكنك تجاوز الإعدادات الافتراضية.
يمكنك تنفيذ ITextFormatter مخصص ونقله إلى الحوض لتغيير تنسيق سجلاتك. هذا مفيد إذا كنت ترغب في إضافة/إزالة/تعديل الحقول من حمولة JSON النهائية ، أو تنبعث منها سجلات غير JSON إلى Datadog.
هناك العديد من الخيارات لتنفيذ التنسيقات المخصصة. أسهل طريقة هي استخدام التعبيرات serilog. فيما يلي مثال على ITextFormatter الذي يسقط حقل MessageTemplate :
public class DatadogJsonNoTemplateFormatter : ExpressionTemplate
{
public DatadogJsonNoTemplateFormatter ( ) : base ( @"{ {
Timestamp: @t,
level: @l,
message: @m,
Properties: {..@p},
Renderings: @r}
}" ) { }
} إذا لم تتمكن من استخدام التعبيرات السيلوغ بسبب توافق الإطار-يمكنك تنفيذ ملفك الخاص بـ JsonValueFormatter أو تطبيق الافتراضي:
تدعم DatadogLogs الوسائط التالية:
| دعوى | يكتب | وصف |
|---|---|---|
apiKey | string | مفتاح API DataDog الخاص بك. |
source | string | اسم التكامل. |
service | string | اسم الخدمة. |
host | string | اسم المضيف. |
tags | string[] | العلامات المخصصة. |
configuration | DatadogConfiguration | يقوم DataDog بتسجيل تكوين العميل. |
restrictedToMinimumLevel | LogEventLevel | الحد الأدنى لمستوى السجل للحوض. |
batchSizeLimit | int | الحد الأقصى لعدد الأحداث التي تنبعث منها في دفعة واحدة. |
batchPeriod | TimeSpan | وقت الانتظار قبل انبعاث مجموعة جديدة من الأحداث. |
queueLimit | int | الحد الأقصى لعدد الأحداث التي يجب الاحتفاظ بها في قائمة الانتظار الداخلية للحوض ، أو null لقائمة انتظار غير محدودة. الافتراضي هو 10000 |
exceptionHandler | Action<Exception> | يتم استدعاء هذه الوظيفة عند حدوث استثناء عند استخدام DatadogConfiguration.UseTCP=false (التكوين الافتراضي). |
detectTCPDisconnection | bool | اكتشف متى يتم فقدان اتصال TCP وإعادة إنشاء اتصال جديد. |
formatter | ITextFormatter | تطبيق تنسيق مخصص لتغيير تنسيق السجلات |
maxMessageSize | int | الحد الأقصى لحجم بايت للرسالة قبل أن تنقسم إلى أجزاء |
ملاحظة: إذا تجاوز maxMessageSize حد API الموثق البالغ 1 ميجابايت - فسيتم إسقاط أي حمولات أكبر من 1 ميغابايت عن طريق المدخول.
اصطدم الإصدار في src/Serilog.Sinks.Datadog.Logs.csproj ودمج فرعك
قم بتشغيل هذه الأوامر في مجلد جذر المشروع
git checkout master && git pull
msbuild Serilog.Sinks.Datadog.Logs.sln /t:restore /p:Configuration=Release
msbuild Serilog.Sinks.Datadog.Logs.sln /t:pack /p:Configuration=Release يمكنك العثور على ملف .nupkg على src/Serilog.Sinks.Datadog.Logs/bin/Release/Serilog.Sinks.Datadog.Logs.<version>.nupkg
كما Serilog.Sinks.Datadog.Logs تنفذ serilog.sinks.periodicbatching ، باستخدام serilog.sinks.async غير موصى به.
من Serilog.sinks.async وثائق:
ملاحظة: العديد من الأحواض المستندة إلى الشبكة (CouchDB ، Elasticsearch ، MongoDB ، SEQ ، Splunk ...) تؤدي بالفعل تجميع غير متزامن أصليًا ولا تستفيد من هذا الغلاف.