{"id":30718,"date":"2025-10-01T06:01:24","date_gmt":"2025-10-01T03:01:24","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/"},"modified":"2025-10-01T06:01:24","modified_gmt":"2025-10-01T03:01:24","slug":"serilog-ile-net-uygulamalarinda-datadog-entegrasyonu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/","title":{"rendered":"Serilog ile .NET Uygulamalar\u0131nda Datadog Entegrasyonu"},"content":{"rendered":"<p><body><\/p>\n<p>\n    Modern yaz\u0131l\u0131m projelerinde performans\u0131 izlemek, hatalar\u0131 h\u0131zla tespit etmek ve genel sistem sa\u011fl\u0131\u011f\u0131n\u0131 anlamak kritik \u00f6neme sahiptir. Peki, .NET uygulamalar\u0131n\u0131zdaki loglar\u0131 ve performans\u0131 merkezi bir platformda etkili bir \u015fekilde nas\u0131l y\u00f6netebilirsiniz? Bu makale, pop\u00fcler loglama k\u00fct\u00fcphanesi Serilog&#8217;u kullanarak .NET projelerinizi Datadog ile sorunsuz bir \u015fekilde entegre etmenin ad\u0131m ad\u0131m yollar\u0131n\u0131 ve en iyi uygulamalar\u0131n\u0131 a\u00e7\u0131kl\u0131yor. Haz\u0131r m\u0131s\u0131n\u0131z?\n<\/p>\n<p>\n    G\u00fcn\u00fcm\u00fcz\u00fcn da\u011f\u0131t\u0131k sistem mimarilerinde, uygulaman\u0131n her bir bile\u015feninden gelen verileri tek bir merkezde toplamak ve analiz etmek, operasyonel g\u00f6r\u00fcn\u00fcrl\u00fck (observability) sa\u011flaman\u0131n temelidir. \u0130\u015fte tam bu noktada Datadog ve Serilog ikilisi devreye giriyor. Datadog, sunucular\u0131n\u0131zdan, kapsay\u0131c\u0131lar\u0131n\u0131zdan, sunucusuz i\u015flevlerinizden ve tabii ki uygulamalar\u0131n\u0131zdan metrikleri, loglar\u0131 ve izlemeleri (tracing) toplayarak kapsaml\u0131 bir g\u00f6zlem platformu sunar. Uygulama Performans \u0130zleme (APM) yetenekleri sayesinde kod seviyesindeki darbo\u011fazlar\u0131 tespit edebilir, log y\u00f6netimi ile hatalar\u0131n k\u00f6k nedenlerini bulabilir ve sistem genelindeki metriklerle e\u011filimleri izleyebilirsiniz. K\u0131sacas\u0131, Datadog, sisteminize yukar\u0131dan bir ku\u015fbak\u0131\u015f\u0131 g\u00f6r\u00fcn\u00fcm sa\u011flarken, ayn\u0131 zamanda en ince ayr\u0131nt\u0131lara kadar inmenize olanak tan\u0131r.\n<\/p>\n<p>\n    Serilog ise .NET ekosisteminde yap\u0131land\u0131r\u0131lm\u0131\u015f loglama (structured logging) konusunda \u00f6ne \u00e7\u0131kan, esnek ve g\u00fc\u00e7l\u00fc bir k\u00fct\u00fcphanedir. Geleneksel d\u00fcz metin loglar\u0131n\u0131n aksine, Serilog loglar\u0131 JSON veya benzeri yap\u0131land\u0131r\u0131lm\u0131\u015f formatlarda \u00fcretir. Bu sayede log mesajlar\u0131 sadece insanlar taraf\u0131ndan de\u011fil, makineler taraf\u0131ndan da kolayca okunabilir ve sorgulanabilir hale gelir. \u00d6rne\u011fin, bir hata logu sadece &#8220;Beklenmeyen bir hata olu\u015ftu&#8221; demek yerine, &#8220;Hata Kodu: 500, Kullan\u0131c\u0131 ID: 123, \u0130stek URL: \/api\/urunler, Hata Mesaj\u0131: Veritaban\u0131 ba\u011flant\u0131s\u0131 kesildi&#8221; gibi zengin ve sorgulanabilir veriler i\u00e7erebilir. Serilog&#8217;un bu yap\u0131land\u0131r\u0131lm\u0131\u015f yap\u0131s\u0131, loglar\u0131 Datadog gibi g\u00fc\u00e7l\u00fc bir izleme platformuna g\u00f6nderdi\u011finizde paha bi\u00e7ilmez faydalar sa\u011flar. Datadog&#8217;da bu yap\u0131land\u0131r\u0131lm\u0131\u015f loglar \u00fczerinde filtreleme, arama ve analiz yapmak \u00e7ok daha kolay ve verimli olur.\n<\/p>\n<p>\n    Bu iki g\u00fc\u00e7l\u00fc arac\u0131n bir araya gelmesiyle, .NET uygulaman\u0131zda \u00fcretilen t\u00fcm \u00f6nemli olaylar ve performans verileri merkezi bir Datadog panosunda toplan\u0131r. Uygulaman\u0131zda bir yava\u015flama ya\u015fand\u0131\u011f\u0131nda, Datadog&#8217;un APM \u00f6zelli\u011fi size hangi metodun yava\u015f \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6sterirken, Serilog ile g\u00f6nderdi\u011finiz yap\u0131land\u0131r\u0131lm\u0131\u015f loglar tam o anda ne oldu\u011funu, hangi parametrelerle \u00e7a\u011fr\u0131ld\u0131\u011f\u0131n\u0131 ve olas\u0131 hata mesajlar\u0131n\u0131 detayl\u0131 bir \u015fekilde ortaya koyar. Bu entegrasyon, hata ay\u0131klama s\u00fcre\u00e7lerinizi h\u0131zland\u0131r\u0131r, operasyonel maliyetleri d\u00fc\u015f\u00fcr\u00fcr ve uygulaman\u0131z\u0131n genel sa\u011fl\u0131\u011f\u0131 hakk\u0131nda derinlemesine i\u00e7g\u00f6r\u00fcler sunar. Merkezi bir loglama ve izleme \u00e7\u00f6z\u00fcm\u00fc olmadan, \u00f6zellikle mikroservis mimarilerinde, sorun giderme bir kabusa d\u00f6n\u00fc\u015febilir. Serilog&#8217;un esnek &#8220;sink&#8221; (hedef) mekanizmas\u0131 sayesinde, loglar\u0131 Datadog&#8217;a g\u00f6ndermek son derece basittir ve bu da geli\u015ftiricilerin uygulaman\u0131n i\u015f mant\u0131\u011f\u0131na odaklanmas\u0131na olanak tan\u0131r.\n<\/p>\n<div class=\"expert-tip\">\n    Uzman \u0130pucu: Serilog&#8217;un yap\u0131land\u0131r\u0131lm\u0131\u015f loglama \u00f6zelli\u011fi, Datadog&#8217;daki log analiz yeteneklerini maksimuma \u00e7\u0131kar\u0131r. Loglar\u0131n\u0131zda \u00f6zel alanlar (\u00f6rne\u011fin, <code>TransactionId<\/code>, <code>UserId<\/code>) tan\u0131mlayarak, bu alanlar \u00fczerinden karma\u015f\u0131k filtreler olu\u015fturabilir ve belirli olaylar\u0131n korelasyonunu kolayca yapabilirsiniz.\n<\/div>\n<h2>.NET Projesinde Serilog Kurulumu ve Temel Yap\u0131land\u0131rma Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p>\n    Bir .NET uygulamas\u0131nda Serilog&#8217;u devreye almak, projenize birka\u00e7 NuGet paketi eklemek ve ard\u0131ndan basit bir yap\u0131land\u0131rma ile ba\u015flar. Bu b\u00f6l\u00fcmde, ister bir konsol uygulamas\u0131 olsun ister bir ASP.NET Core web uygulamas\u0131, Serilog&#8217;u temel d\u00fczeyde nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. \u0130lk olarak, projenizin <code>csproj<\/code> dosyas\u0131na veya NuGet Paket Y\u00f6neticisi arac\u0131l\u0131\u011f\u0131yla gerekli paketleri eklemeniz gerekecektir. Temel bir Serilog kurulumu i\u00e7in genellikle <code>Serilog<\/code> ve <code>Serilog.AspNetCore<\/code> (ASP.NET Core uygulamalar\u0131 i\u00e7in) paketlerine ihtiyac\u0131n\u0131z olur. Loglar\u0131n\u0131z\u0131 konsola veya bir dosyaya yazmak isterseniz <code>Serilog.Sinks.Console<\/code> ve <code>Serilog.Sinks.File<\/code> gibi sink paketlerini de eklemeniz gerekebilir.\n<\/p>\n<div class=\"code-example-label\">Serilog Gerekli NuGet Paketleri<\/div>\n<pre><code>\nInstall-Package Serilog\nInstall-Package Serilog.AspNetCore\nInstall-Package Serilog.Sinks.Console\nInstall-Package Serilog.Sinks.File\n<\/pre>\n<p><\/code><\/p>\n<p>\n    Paketleri y\u00fckledikten sonra, Serilog'u ASP.NET Core uygulaman\u0131zda yap\u0131land\u0131rmak i\u00e7in genellikle <code>Program.cs<\/code> dosyas\u0131n\u0131 kullan\u0131r\u0131z. Yeni .NET 6+ \u015fablonlar\u0131nda, uygulaman\u0131n ana ba\u015flatma noktas\u0131 olan <code>Program.cs<\/code> i\u00e7inde builder objesini yap\u0131land\u0131r\u0131rken Serilog'u entegre edebilirsiniz. A\u015fa\u011f\u0131daki \u00f6rnek, temel bir Serilog yap\u0131land\u0131rmas\u0131n\u0131 g\u00f6stermektedir. Bu yap\u0131land\u0131rmada, loglar hem konsola hem de bir dosyaya yaz\u0131lacakt\u0131r.\n<\/p>\n<div class=\"code-example-label\">Program.cs (ASP.NET Core) i\u00e7inde Serilog Yap\u0131land\u0131rmas\u0131<\/div>\n<pre><code>\nusing Serilog;\nusing Serilog.Events;\n\nvar builder = WebApplication.CreateBuilder(args);\n\n\/\/ Serilog yap\u0131land\u0131rmas\u0131\nbuilder.Host.UseSerilog((context, services, configuration) => configuration\n    .MinimumLevel.Debug() \/\/ En d\u00fc\u015f\u00fck log seviyesi\n    .MinimumLevel.Override(\"Microsoft\", LogEventLevel.Warning) \/\/ Microsoft loglar\u0131n\u0131 azalt\n    .Enrich.FromLogContext() \/\/ Log ba\u011flam\u0131ndaki \u00f6zelliklerle zenginle\u015ftir\n    .WriteTo.Console() \/\/ Konsola yaz\n    .WriteTo.File(\"logs\/myapp.txt\", rollingInterval: RollingInterval.Day) \/\/ Dosyaya yaz\n    .ReadFrom.Configuration(context.Configuration)); \/\/ appsettings.json'dan okuma\n\n\/\/ Di\u011fer servisler ve yap\u0131land\u0131rmalar\nbuilder.Services.AddControllers();\n\/\/ ...\n\nvar app = builder.Build();\n\napp.UseSerilogRequestLogging(); \/\/ HTTP isteklerini loglama\n\n\/\/ Uygulama pipeline'\u0131\napp.UseAuthorization();\napp.MapControllers();\n\napp.Run();\n<\/pre>\n<p><\/code><\/p>\n<p>\n    Bu yap\u0131land\u0131rma, Serilog'un nas\u0131l ba\u015flad\u0131\u011f\u0131n\u0131 ve loglar\u0131 nereye g\u00f6nderece\u011fini tan\u0131mlar. <code>MinimumLevel.Debug()<\/code> ile en d\u00fc\u015f\u00fck debug seviyesindeki loglar\u0131n bile i\u015flenmesini sa\u011flarken, <code>MinimumLevel.Override(\"Microsoft\", LogEventLevel.Warning)<\/code> ile framework'ten gelen \u00e7ok fazla bilginin loglar\u0131 bo\u011fmas\u0131n\u0131 engelliyoruz. <code>Enrich.FromLogContext()<\/code> \u00f6zelli\u011fi, log ba\u011flam\u0131na eklenen \u00f6zel \u00f6zelliklerin her log mesaj\u0131na dahil edilmesini sa\u011flar, bu da daha zengin loglar anlam\u0131na gelir. <code>WriteTo.Console()<\/code> ve <code>WriteTo.File()<\/code> ise loglar\u0131 s\u0131ras\u0131yla konsola ve bir dosyaya yazmak i\u00e7in kullan\u0131lan sink'lerdir. Son olarak, <code>ReadFrom.Configuration(context.Configuration)<\/code> ile Serilog yap\u0131land\u0131rmas\u0131n\u0131n <code>appsettings.json<\/code> dosyas\u0131ndan okunmas\u0131na olanak tan\u0131r\u0131z, bu da yap\u0131land\u0131rman\u0131n daha esnek olmas\u0131n\u0131 sa\u011flar.\n<\/p>\n<p>\n    <code>appsettings.json<\/code> dosyas\u0131nda Serilog yap\u0131land\u0131rmas\u0131 genellikle \u015fu \u015fekilde g\u00f6r\u00fcn\u00fcr:\n<\/p>\n<div class=\"code-example-label\">appsettings.json i\u00e7inde Serilog Yap\u0131land\u0131rmas\u0131<\/div>\n<pre><code>\n{\n  \"Serilog\": {\n    \"Using\": [ \"Serilog.Sinks.Console\", \"Serilog.Sinks.File\" ],\n    \"MinimumLevel\": {\n      \"Default\": \"Debug\",\n      \"Override\": {\n        \"Microsoft\": \"Warning\",\n        \"System\": \"Warning\"\n      }\n    },\n    \"WriteTo\": [\n      { \"Name\": \"Console\" },\n      {\n        \"Name\": \"File\",\n        \"Args\": {\n          \"path\": \"logs\/applog.txt\",\n          \"rollingInterval\": \"Day\",\n          \"formatter\": \"Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact\"\n        }\n      }\n    ],\n    \"Enrich\": [ \"FromLogContext\", \"WithMachineName\", \"WithProcessId\", \"WithThreadId\" ]\n  }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>\n    Bu dosya tabanl\u0131 yap\u0131land\u0131rma, uygulama kodunu de\u011fi\u015ftirmeden loglama davran\u0131\u015f\u0131n\u0131 dinamik olarak ayarlaman\u0131za olanak tan\u0131r. Art\u0131k uygulaman\u0131zda <code>ILogger<T><\/code> aray\u00fcz\u00fcn\u00fc kullanarak log mesajlar\u0131 olu\u015fturabilirsiniz.\n<\/p>\n<div class=\"code-example-label\">Loglama \u00d6rne\u011fi<\/div>\n<pre><code>\nusing Microsoft.Extensions.Logging;\n\npublic class MyService\n{\n    private readonly ILogger<MyService> _logger;\n\n    public MyService(ILogger<MyService> logger)\n    {\n        _logger = logger;\n    }\n\n    public void ProcessData(string data)\n    {\n        _logger.LogInformation(\"Veri i\u015flenmeye ba\u015fland\u0131: {Data}\", data);\n\n        try\n        {\n            \/\/ Veri i\u015fleme mant\u0131\u011f\u0131\n            if (data == \"hata\")\n            {\n                throw new InvalidOperationException(\"Ge\u00e7ersiz veri giri\u015fi!\");\n            }\n            _logger.LogDebug(\"Veri ba\u015far\u0131yla i\u015flendi.\");\n        }\n        catch (Exception ex)\n        {\n            _logger.LogError(ex, \"Veri i\u015flenirken bir hata olu\u015ftu: {Data}\", data);\n        }\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>\n    Bu yap\u0131land\u0131rma ve kullan\u0131m ile Serilog, uygulaman\u0131zda g\u00fc\u00e7l\u00fc ve yap\u0131land\u0131r\u0131lm\u0131\u015f loglama i\u00e7in haz\u0131r hale gelmi\u015f olur. \u015eimdi s\u0131rada bu loglar\u0131 Datadog'a g\u00f6ndermek var.\n<\/p>\n<h2>Datadog APM ve Log Toplay\u0131c\u0131 Kurulumu: Ad\u0131m Ad\u0131m Entegrasyon<\/h2>\n<p>\n    Serilog'u .NET projenizde yap\u0131land\u0131rd\u0131ktan sonra, s\u0131ra bu yap\u0131land\u0131r\u0131lm\u0131\u015f loglar\u0131 ve APM izlemelerini Datadog'a g\u00f6ndermeye gelir. Bu entegrasyon i\u00e7in iki ana bile\u015fenle \u00e7al\u0131\u015faca\u011f\u0131z: Datadog Agent ve Serilog'un Datadog'a \u00f6zel bir sink'i. \u0130lk olarak, Datadog'un uygulaman\u0131zdan ve sunucunuzdan veri toplayabilmesi i\u00e7in Datadog Agent'\u0131n kurulumu gereklidir. Datadog Agent, sunucunuzda (sanal makine, fiziksel sunucu, Docker konteyneri veya Kubernetes k\u00fcmesi) \u00e7al\u0131\u015fan hafif bir yaz\u0131l\u0131md\u0131r. G\u00f6revi, sistem metriklerini toplamak, loglar\u0131 iletmek ve APM izlemelerini Datadog platformuna g\u00f6ndermektir. Datadog web sitesinden i\u015fletim sisteminize uygun kurulum talimatlar\u0131n\u0131 takip ederek Agent'\u0131 kurabilirsiniz. Kurulum s\u0131ras\u0131nda size verilen Datadog API anahtar\u0131n\u0131z\u0131 kullanmay\u0131 unutmay\u0131n; bu anahtar Agent'\u0131n verileri do\u011fru hesaba g\u00f6ndermesini sa\u011flar.\n<\/p>\n<div class=\"code-example-label\">Datadog Agent Kurulumu (\u00d6rnek - Linux)<\/div>\n<pre><code>\nDD_API_KEY=\"YOUR_DATADOG_API_KEY\" DD_SITE=\"datadoghq.com\" bash -c \"$(curl -L https:\/\/install.datadoghq.com\/agent\/install.sh)\"\n<\/pre>\n<p><\/code><\/p>\n<p>\n    Agent kurulduktan ve \u00e7al\u0131\u015f\u0131r duruma geldikten sonra, uygulaman\u0131zdaki Serilog loglar\u0131n\u0131 Datadog'a y\u00f6nlendirmek i\u00e7in <code>Serilog.Sinks.Datadog.Logs<\/code> NuGet paketini projenize eklememiz gerekiyor.\n<\/p>\n<div class=\"code-example-label\">Datadog Log Sink NuGet Paketi<\/div>\n<pre><code>\nInstall-Package Serilog.Sinks.Datadog.Logs\n<\/pre>\n<p><\/code><\/p>\n<p>\n    Bu paketi ekledikten sonra, Serilog yap\u0131land\u0131rman\u0131za yeni bir \"sink\" ekleyece\u011fiz. Bu, loglar\u0131n konsola veya dosyaya yaz\u0131ld\u0131\u011f\u0131 gibi Datadog'a da g\u00f6nderilmesini sa\u011flayacakt\u0131r. <code>Program.cs<\/code> veya <code>appsettings.json<\/code> dosyan\u0131z\u0131 g\u00fcncelleyerek Datadog sink'ini ekleyebilirsiniz.\n<\/p>\n<div class=\"code-example-label\">Program.cs i\u00e7inde Datadog Sink Entegrasyonu<\/div>\n<pre><code>\nusing Serilog;\nusing Serilog.Events;\nusing Serilog.Sinks.Datadog.Logs; \/\/ Yeni using ifadesi\n\nvar builder = WebApplication.CreateBuilder(args);\n\nbuilder.Host.UseSerilog((context, services, configuration) => configuration\n    .MinimumLevel.Debug()\n    .MinimumLevel.Override(\"Microsoft\", LogEventLevel.Warning)\n    .Enrich.FromLogContext()\n    .Enrich.WithProperty(\"ApplicationName\", \"MyDotNetApp\") \/\/ Uygulama ad\u0131 ekleyin\n    .WriteTo.Console()\n    .WriteTo.File(\"logs\/myapp.txt\", rollingInterval: RollingInterval.Day)\n    .WriteTo.DatadogLogs(\n        apiKey: context.Configuration[\"Datadog:ApiKey\"], \/\/ API Key appsettings.json'dan okunur\n        service: \"my-dotnet-service\", \/\/ Datadog'da g\u00f6z\u00fckecek servis ad\u0131\n        source: \"csharp\", \/\/ Loglar\u0131n kayna\u011f\u0131\n        host: Environment.MachineName, \/\/ Loglar\u0131n geldi\u011fi host\n        configuration: context.Configuration, \/\/ appsettings.json ayarlar\u0131n\u0131 kullan\n        logEventLevel: LogEventLevel.Information \/\/ Datadog'a g\u00f6nderilecek minimum log seviyesi\n    )\n    .ReadFrom.Configuration(context.Configuration));\n\n\/\/ ... (Di\u011fer yap\u0131land\u0131rmalar) ...\n\nvar app = builder.Build();\napp.UseSerilogRequestLogging();\n\/\/ ...\napp.Run();\n<\/pre>\n<p><\/code><\/p>\n<p>\n    <code>appsettings.json<\/code> dosyan\u0131zda Datadog API Key'i ve di\u011fer ayarlar\u0131 \u015fu \u015fekilde tan\u0131mlayabilirsiniz:\n<\/p>\n<div class=\"code-example-label\">appsettings.json i\u00e7inde Datadog Ayarlar\u0131<\/div>\n<pre><code>\n{\n  \"Datadog\": {\n    \"ApiKey\": \"YOUR_DATADOG_API_KEY\", \/\/ Datadog API Anahtar\u0131n\u0131z\u0131 buraya girin\n    \"Site\": \"datadoghq.com\" \/\/ B\u00f6lgenize g\u00f6re de\u011fi\u015febilir (\u00f6r: eu.datadoghq.com)\n  },\n  \"Serilog\": {\n    \"Using\": [ \"Serilog.Sinks.Console\", \"Serilog.Sinks.File\", \"Serilog.Sinks.Datadog.Logs\" ],\n    \"MinimumLevel\": {\n      \"Default\": \"Information\",\n      \"Override\": {\n        \"Microsoft\": \"Warning\",\n        \"System\": \"Warning\"\n      }\n    },\n    \"WriteTo\": [\n      { \"Name\": \"Console\" },\n      {\n        \"Name\": \"File\",\n        \"Args\": {\n          \"path\": \"logs\/applog.txt\",\n          \"rollingInterval\": \"Day\"\n        }\n      },\n      {\n        \"Name\": \"DatadogLogs\",\n        \"Args\": {\n          \"apiKey\": \"YOUR_DATADOG_API_KEY\", \/\/ Bu alan\u0131 appsettings.json'dan do\u011frudan almak yerine, Production ortam\u0131nda Environment Variable olarak ayarlamak daha g\u00fcvenlidir.\n          \"service\": \"my-dotnet-service\",\n          \"source\": \"csharp\",\n          \"host\": \"my-dotnet-app-host\",\n          \"logEventLevel\": \"Information\"\n        }\n      }\n    ],\n    \"Enrich\": [ \"FromLogContext\", \"WithMachineName\", \"WithProcessId\", \"WithThreadId\", \"WithProperty:ApplicationName:MyDotNetApp\" ]\n  }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>\n    <strong>APM Entegrasyonu:<\/strong> Loglar\u0131 Datadog'a g\u00f6ndermenin yan\u0131 s\u0131ra, .NET uygulaman\u0131z\u0131n performans izlemesini (APM) etkinle\u015ftirmek i\u00e7in <code>Datadog.Trace<\/code> k\u00fct\u00fcphanesini kullanabilirsiniz. Bu k\u00fct\u00fcphane, uygulaman\u0131z\u0131n i\u00e7ine \"instrumentation\" ekleyerek metod \u00e7a\u011fr\u0131lar\u0131n\u0131, veritaban\u0131 sorgular\u0131n\u0131, HTTP isteklerini ve di\u011fer i\u015flemleri izler. Genellikle, uygulaman\u0131z\u0131 Datadog Tracer ile ba\u015flatarak otomatik enstr\u00fcmantasyonu etkinle\u015ftirebilirsiniz. Bunun i\u00e7in <code>Datadog.Trace.AspNet<\/code> veya <code>Datadog.Trace.OpenTracing<\/code> gibi paketler ve ilgili ba\u015flatma ayarlar\u0131 kullan\u0131l\u0131r. \u00c7o\u011fu durumda, Datadog Agent'\u0131n kurulu oldu\u011fu bir ortamda uygulaman\u0131z\u0131 \u00e7al\u0131\u015ft\u0131r\u0131rken, .NET Tracer otomatik olarak y\u00fcklenecek ve izlemeleri Agent \u00fczerinden Datadog'a g\u00f6ndermeye ba\u015flayacakt\u0131r.\n<\/p>\n<div class=\"code-example-label\">Datadog Tracer ile Otomatik Enstr\u00fcmantasyon (\u00d6rnek)<\/div>\n<pre><code>\n\/\/ Uygulaman\u0131z\u0131 Datadog Trace ile ba\u015flatmak i\u00e7in genellikle\n\/\/ environment de\u011fi\u015fkenleri kullan\u0131l\u0131r. \u00d6rne\u011fin:\n\/\/ DD_PROFILING_ENABLED=true\n\/\/ DD_TRACE_AGENT_URL=http:\/\/localhost:8126\n\/\/ DD_SERVICE=my-dotnet-service\n\/\/ DD_ENV=production\n\/\/ DD_VERSION=1.0.0\n\n\/\/ Bu ayarlar, Datadog'un .NET Tracer'\u0131n\u0131 uygulaman\u0131zla birlikte\n\/\/ otomatik olarak ba\u015flatmas\u0131n\u0131 sa\u011flar ve kodunuzda ekstra bir\n\/\/ de\u011fi\u015fiklik yapman\u0131za gerek kalmaz.\n<\/pre>\n<p><\/code><\/p>\n<p>\n    <strong>Vaka Analizi: Mikroservislerde U\u00e7tan Uca \u0130zleme<\/strong><br \/>\n    Bir mikroservis mimarisinde, bir iste\u011fin birden fazla servisten ge\u00e7mesi yayg\u0131nd\u0131r. \u00d6rne\u011fin, bir kullan\u0131c\u0131 talebi ilk olarak API Gateway'e, ard\u0131ndan bir Sipari\u015f servisine, oradan da bir Envanter servisine gidebilir. Serilog ile her serviste loglar\u0131 zenginle\u015ftirirken, Datadog APM'in distributed tracing \u00f6zelli\u011fi sayesinde bu yolculu\u011fun tamam\u0131n\u0131 tek bir \"trace\" i\u00e7inde g\u00f6rebilirsiniz. Her servisin hangi metodlar\u0131 ne kadar s\u00fcrede \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131, hangi loglar\u0131n \u00fcretildi\u011fini ve olas\u0131 hatalar\u0131 tek bir grafiksel aray\u00fczde incelemek, sorunlar\u0131 \u00e7ok daha h\u0131zl\u0131 tespit etmenizi sa\u011flar. Serilog'a ekleyece\u011finiz Correlation ID'ler, trace'leri loglarla ili\u015fkilendirmenin anahtar\u0131d\u0131r.\n<\/p>\n<h3>Datadog Loglar\u0131 ve Metrikleri Nas\u0131l \u0130zlenir ve G\u00f6rselle\u015ftirilir?<\/h3>\n<p>\n    Datadog'a loglar\u0131n\u0131z\u0131 ve APM izlemelerinizi g\u00f6ndermeye ba\u015flad\u0131ktan sonra, bu verileri anlaml\u0131 i\u00e7g\u00f6r\u00fclere d\u00f6n\u00fc\u015ft\u00fcrmenin zaman\u0131 gelir. Datadog platformu, toplanan verileri g\u00fc\u00e7l\u00fc bir \u015fekilde izlemenizi, g\u00f6rselle\u015ftirmenizi ve bu verilere dayanarak alarmlar kurman\u0131z\u0131 sa\u011flar.\n<\/p>\n<p>\n    <strong>Log Explorer Kullan\u0131m\u0131:<\/strong> Datadog'daki Log Explorer, g\u00f6nderdi\u011finiz t\u00fcm loglar\u0131 tek bir merkezi konumda g\u00f6r\u00fcnt\u00fclemenizi ve araman\u0131z\u0131 sa\u011flar. Serilog ile yap\u0131land\u0131r\u0131lm\u0131\u015f loglar g\u00f6nderdi\u011finizde, her bir log kayd\u0131n\u0131n ek \u00f6zelliklerini (\u00f6rne\u011fin, <code>UserId<\/code>, <code>TransactionId<\/code>, <code>ApplicationName<\/code>) Datadog'da \"facets\" olarak g\u00f6rebilirsiniz. Bu facets'leri kullanarak loglar\u0131n\u0131z\u0131 kolayca filtreleyebilir, belirli bir kullan\u0131c\u0131ya ait t\u00fcm olaylar\u0131 veya belirli bir hata koduna sahip loglar\u0131 h\u0131zla bulabilirsiniz. \u00d6rne\u011fin, <code>service:my-dotnet-service status:error<\/code> gibi basit bir sorgu ile uygulaman\u0131zdaki t\u00fcm hata loglar\u0131n\u0131 listeleyebilir ve ard\u0131ndan <code>@ApplicationName:MyDotNetApp<\/code> gibi bir facet ile sadece belirli bir uygulamaya ait hatalar\u0131 izleyebilirsiniz.\n<\/p>\n<p>\n    <strong>Custom Dashboards Olu\u015fturma:<\/strong> Loglar, APM izlemeleri ve sistem metrikleri gibi farkl\u0131 veri t\u00fcrlerini bir araya getirerek \u00f6zel panolar (dashboards) olu\u015fturmak, Datadog'un en g\u00fc\u00e7l\u00fc \u00f6zelliklerinden biridir. Kendi i\u015f ak\u0131\u015f\u0131n\u0131za ve operasyonel ihtiya\u00e7lar\u0131n\u0131za g\u00f6re panolar tasarlayabilirsiniz. \u00d6rne\u011fin, bir panoda \u015funlar\u0131 bir araya getirebilirsiniz:\n<\/p>\n<ul>\n<li>APM grafi\u011fi: Uygulaman\u0131z\u0131n genel istek gecikme s\u00fcresi.<\/li>\n<li>Log grafi\u011fi: Son bir saatteki hata loglar\u0131n\u0131n say\u0131s\u0131.<\/li>\n<li>Metrik grafi\u011fi: CPU ve bellek kullan\u0131m\u0131.<\/li>\n<li>Log stream: Belirli bir servisten gelen ger\u00e7ek zamanl\u0131 loglar.<\/li>\n<\/ul>\n<p>\n    Bu sayede, uygulaman\u0131z\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 tek bir bak\u0131\u015fta g\u00f6rebilir ve herhangi bir anormallik durumunda ilgili loglara veya izlemelere h\u0131zla ge\u00e7i\u015f yapabilirsiniz. Grafikler, log patternleri ve metrik g\u00f6stergeleri sayesinde veri setlerindeki e\u011filimleri kolayca fark edebilir, potansiyel sorunlar\u0131 daha ortaya \u00e7\u0131kmadan tespit edebilirsiniz.\n<\/p>\n<p>\n    <strong>Monitoring ve Alerting:<\/strong> Uygulaman\u0131z\u0131n kritik e\u015fiklerini belirleyerek Datadog'da alarmlar (monitors) kurabilirsiniz. \u00d6rne\u011fin:\n<\/p>\n<ul>\n<li>Son 5 dakikada hata logu say\u0131s\u0131 belirli bir e\u015fi\u011fi a\u015farsa.<\/li>\n<li>Uygulaman\u0131n ortalama yan\u0131t s\u00fcresi belirli bir s\u00fcreyi ge\u00e7erse.<\/li>\n<li>Belirli bir sunucunun CPU kullan\u0131m\u0131 %90'\u0131n \u00fczerine \u00e7\u0131karsa.<\/li>\n<\/ul>\n<p>\n    Bu alarmlar e-posta, Slack, PagerDuty gibi \u00e7e\u015fitli kanallar arac\u0131l\u0131\u011f\u0131yla ilgili ekiplere bildirim g\u00f6nderebilir. Proaktif izleme sayesinde, kullan\u0131c\u0131lar etkilenmeden \u00f6nce sorunlar\u0131 fark edip m\u00fcdahale edebilirsiniz.\n<\/p>\n<p>\n    <strong>Vaka Analizi: Hata Trendlerini \u0130zleme ve Proaktif \u00d6nlemler<\/strong><br \/>\n    Bir e-ticaret uygulamas\u0131nda, \u00f6deme i\u015flemleri s\u0131ras\u0131nda olu\u015fan belirli bir hata kodunun (\u00f6rne\u011fin, <code>PaymentGatewayError_503<\/code>) say\u0131s\u0131nda ani bir art\u0131\u015f oldu\u011funu varsayal\u0131m. Datadog'da olu\u015fturdu\u011funuz bir dashboard, bu hata kodunun son 30 dakikadaki grafi\u011fini anl\u0131k olarak g\u00f6sterir ve belirlenen bir e\u015fi\u011fi a\u015ft\u0131\u011f\u0131nda otomatik olarak bir alarm tetikler. Geli\u015ftirme ekibi bu alarm\u0131 al\u0131r almaz, Datadog Log Explorer'a giderek bu hata koduna sahip loglar\u0131 filtreler. Log detaylar\u0131nda, hatan\u0131n belirli bir \u00fc\u00e7\u00fcnc\u00fc parti \u00f6deme sa\u011flay\u0131c\u0131s\u0131ndan kaynakland\u0131\u011f\u0131 ve belirli bir sunucu grubunda yo\u011funla\u015ft\u0131\u011f\u0131 ortaya \u00e7\u0131kar. Bu bilgilerle, ekip h\u0131zla \u00f6deme sa\u011flay\u0131c\u0131s\u0131yla ileti\u015fime ge\u00e7ebilir veya alternatif bir \u00f6deme y\u00f6nlendirmesi devreye alabilir. Bu proaktif yakla\u015f\u0131m, m\u00fc\u015fteri deneyimini ciddi \u015fekilde etkileyecek b\u00fcy\u00fck bir kesintiyi \u00f6nlemi\u015f olur. Datadog'un bu g\u00f6rselle\u015ftirme ve uyar\u0131 yetenekleri, uygulaman\u0131z\u0131n istikrarl\u0131 \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in hayati \u00f6nem ta\u015f\u0131r.\n<\/p>\n<h2>Geli\u015fmi\u015f Entegrasyon Senaryolar\u0131 ve En \u0130yi Uygulamalar<\/h2>\n<p>\n    Datadog ve Serilog entegrasyonundan maksimum fayday\u0131 sa\u011flamak i\u00e7in baz\u0131 geli\u015fmi\u015f senaryolar\u0131 ve en iyi uygulamalar\u0131 g\u00f6z \u00f6n\u00fcnde bulundurmak \u00f6nemlidir. Yap\u0131land\u0131r\u0131lm\u0131\u015f loglaman\u0131n g\u00fcc\u00fcnden tam olarak yararlanmak, izleme verilerini do\u011fru \u015fekilde korele etmek ve hassas bilgileri korumak bu s\u00fcrecin kritik par\u00e7alar\u0131d\u0131r.\n<\/p>\n<p>\n    <strong>Structured Logging ile Daha Derin \u0130\u00e7g\u00f6r\u00fcler:<\/strong> Serilog'un en b\u00fcy\u00fck avantaj\u0131 olan yap\u0131land\u0131r\u0131lm\u0131\u015f loglama, Datadog'da loglar\u0131n\u0131z\u0131 sorgularken ve analiz ederken size benzersiz bir esneklik sunar. Her log mesaj\u0131na ekledi\u011finiz \u00f6zel \u00f6zellikler (\u00f6rne\u011fin, <code>TenantId<\/code>, <code>RequestId<\/code>, <code>UserId<\/code>, <code>CorrelationId<\/code>) Datadog'da otomatik olarak \"facets\" haline gelir. Bu sayede, belirli bir kirac\u0131ya veya iste\u011fe ait t\u00fcm loglar\u0131 kolayca filtreleyebilir, hatta bu \u00f6zellikler \u00fczerinden metrikler olu\u015fturarak i\u015f s\u00fcre\u00e7lerinizin sa\u011fl\u0131\u011f\u0131n\u0131 izleyebilirsiniz. \u00d6rne\u011fin, <code>@TenantId:abc status:error<\/code> sorgusuyla belirli bir kirac\u0131daki t\u00fcm hatalar\u0131 g\u00f6rebilirsiniz. Loglar\u0131n\u0131zdaki de\u011fer tiplerini Datadog'un anlayaca\u011f\u0131 \u015fekilde do\u011fru bi\u00e7imlendirmek (\u00f6rne\u011fin, tarihleri ISO 8601 format\u0131nda g\u00f6ndermek) de \u00f6nemlidir.\n<\/p>\n<p>\n    <strong>Correlation ID'ler ile U\u00e7tan Uca Takip:<\/strong> Da\u011f\u0131t\u0131k sistemlerde, bir iste\u011fin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc farkl\u0131 servisler ve log kay\u0131tlar\u0131 aras\u0131nda takip etmek zor olabilir. Bu sorunu \u00e7\u00f6zmek i\u00e7in \"Correlation ID\" veya \"Trace ID\" kullanmak en iyi uygulamad\u0131r. Gelen her bir iste\u011fe benzersiz bir kimlik atayarak ve bu kimli\u011fi log ba\u011flam\u0131na ekleyerek (<code>LogContext.PushProperty(\"CorrelationId\", Guid.NewGuid().ToString())<\/code>), iste\u011fin ge\u00e7ti\u011fi t\u00fcm servislerdeki loglar\u0131 bu kimlik \u00fczerinden bir araya getirebilirsiniz. Datadog APM, bu trace ID'lerini otomatik olarak toplar ve loglar\u0131n\u0131za ba\u011flaman\u0131z durumunda, bir trace'in detaylar\u0131na bakarken o trace'le ili\u015fkili loglar\u0131 da g\u00f6rebilirsiniz. Bu, hata ay\u0131klama s\u00fcrecini inan\u0131lmaz derecede h\u0131zland\u0131r\u0131r.\n<\/p>\n<div class=\"code-example-label\">Correlation ID Kullan\u0131m\u0131<\/div>\n<pre><code>\nusing Serilog.Context;\n\npublic class RequestProcessingMiddleware\n{\n    private readonly RequestDelegate _next;\n\n    public RequestProcessingMiddleware(RequestDelegate next)\n    {\n        _next = next;\n    }\n\n    public async Task InvokeAsync(HttpContext context)\n    {\n        \/\/ Benzersiz bir Correlation ID olu\u015ftur\n        var correlationId = Guid.NewGuid().ToString();\n        context.Response.Headers.Add(\"X-Correlation-ID\", correlationId);\n\n        \/\/ Correlation ID'yi log ba\u011flam\u0131na ekle\n        using (LogContext.PushProperty(\"CorrelationId\", correlationId))\n        {\n            await _next(context);\n        }\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>\n    <strong>Hassas Veri Maskeleme:<\/strong> Loglara m\u00fc\u015fteri bilgileri, kredi kart\u0131 numaralar\u0131 veya \u015fifreler gibi hassas verilerin s\u0131zmas\u0131 ciddi g\u00fcvenlik riskleri olu\u015fturabilir. Serilog, log verilerini g\u00f6ndermeden \u00f6nce hassas alanlar\u0131 maskelemek veya tamamen \u00e7\u0131karmak i\u00e7in \u00e7e\u015fitli zenginle\u015ftiriciler (enrichers) ve filtreler sunar. Datadog taraf\u0131nda da hassas verileri otomatik olarak maskeleyebilen log i\u015fleme kurallar\u0131 (log processing pipelines) tan\u0131mlayabilirsiniz. \u00d6rne\u011fin, <code>\"password\": \"my_secret_password\"<\/code> gibi bir ifadeyi <code>\"password\": \"[MASKED]\"<\/code> \u015feklinde de\u011fi\u015ftirecek bir kural belirleyebilirsiniz. Bu, hem g\u00fcvenlik hem de uyumluluk a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir.\n<\/p>\n<p>\n    <strong>Performans \u0130pu\u00e7lar\u0131: Batching ve Async Logging:<\/strong> Y\u00fcksek trafikli uygulamalarda her bir log mesaj\u0131n\u0131 an\u0131nda Datadog'a g\u00f6ndermek performans darbo\u011fazlar\u0131na neden olabilir. <code>Serilog.Sinks.Datadog.Logs<\/code> sink'i genellikle loglar\u0131 biriktirip toplu (batch) olarak g\u00f6nderme yetene\u011fine sahiptir. Bu, a\u011f trafi\u011fini ve G\/\u00c7 y\u00fck\u00fcn\u00fc azaltarak uygulaman\u0131z\u0131n performans\u0131n\u0131 art\u0131r\u0131r. Ayr\u0131ca, loglama i\u015flemlerini ana i\u015f par\u00e7ac\u0131\u011f\u0131ndan ay\u0131rarak asenkron hale getirmek (async logging), uygulaman\u0131n daha h\u0131zl\u0131 yan\u0131t vermesine yard\u0131mc\u0131 olur. Serilog'un dahili tamponlama ve asenkron yazma mekanizmalar\u0131n\u0131 do\u011fru \u015fekilde yap\u0131land\u0131rmak \u00f6nemlidir.\n<\/p>\n<p>\n    <strong>Docker\/Kubernetes Ortamlar\u0131nda Datadog Agent ve Serilog:<\/strong> Mikroservislerin ve kapsay\u0131c\u0131la\u015ft\u0131rman\u0131n yayg\u0131nla\u015fmas\u0131yla birlikte, Datadog Agent'\u0131 Docker konteynerleri veya Kubernetes k\u00fcmeleri i\u00e7inde \u00e7al\u0131\u015ft\u0131rmak standart bir uygulama haline gelmi\u015ftir. Datadog Agent, bir DaemonSet olarak Kubernetes'te da\u011f\u0131t\u0131larak her d\u00fc\u011f\u00fcmde \u00e7al\u0131\u015fabilir ve d\u00fc\u011f\u00fcmdeki t\u00fcm pod'lardan loglar\u0131, metrikleri ve izlemeleri toplayabilir. Serilog ile loglar\u0131 <code>stdout<\/code>'a (standart \u00e7\u0131kt\u0131) yazacak \u015fekilde yap\u0131land\u0131rd\u0131\u011f\u0131n\u0131zda, Datadog Agent bu loglar\u0131 otomatik olarak alg\u0131lay\u0131p Datadog'a iletebilir. Bu, log y\u00f6netimini basitle\u015ftirir ve her konteyner i\u00e7in ayr\u0131 bir yap\u0131land\u0131rmaya gerek kalmaz. Container metrikleri i\u00e7in de Agent'\u0131n uygun \u015fekilde yap\u0131land\u0131r\u0131lmas\u0131 gerekir.\n<\/p>\n<div class=\"code-example-label\">Docker'da Datadog Agent Yap\u0131land\u0131rmas\u0131 (\u00d6rnek docker-compose.yml)<\/div>\n<pre><code>\nversion: '3.8'\nservices:\n  datadog-agent:\n    image: datadog\/agent:latest\n    environment:\n      - DD_API_KEY=${DATADOG_API_KEY}\n      - DD_SITE=${DATADOG_SITE}\n      - DD_LOGS_ENABLED=true\n      - DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true # T\u00fcm konteyner loglar\u0131n\u0131 topla\n      - DD_APM_ENABLED=true\n      - DD_APM_NON_LOCAL_TRAFFIC=true\n      - DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true\n    volumes:\n      - \/var\/run\/docker.sock:\/var\/run\/docker.sock:ro\n      - \/proc\/:\/host\/proc\/:ro\n      - \/sys\/fs\/cgroup\/:\/host\/sys\/fs\/cgroup\/:ro\n    ports:\n      - \"8126:8126\/tcp\" # APM portu\n      - \"8125:8125\/udp\" # Dogstatsd (metrikler) portu\n<\/pre>\n<p><\/code><\/p>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>\n    Bu makale boyunca, .NET uygulamalar\u0131n\u0131z\u0131 Serilog kullanarak Datadog ile nas\u0131l entegre edebilece\u011finizi ayr\u0131nt\u0131l\u0131 bir \u015fekilde ele ald\u0131k. G\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi, Serilog'un yap\u0131land\u0131r\u0131lm\u0131\u015f loglama yetenekleri ve Datadog'un kapsaml\u0131 izleme platformu bir araya geldi\u011finde, uygulamalar\u0131n\u0131z\u0131n performans\u0131, sa\u011fl\u0131\u011f\u0131 ve operasyonel g\u00f6r\u00fcn\u00fcrl\u00fc\u011f\u00fc konusunda g\u00fc\u00e7l\u00fc i\u00e7g\u00f6r\u00fcler elde edebilirsiniz. Ad\u0131m ad\u0131m kurulumdan ba\u015flayarak, temel loglama yap\u0131land\u0131rmalar\u0131n\u0131, Datadog Agent entegrasyonunu ve APM izlemelerini nas\u0131l etkinle\u015ftirebilece\u011finizi \u00f6\u011frendiniz. Ayr\u0131ca, loglar\u0131 ve metrikleri Datadog aray\u00fcz\u00fcnde nas\u0131l izleyip g\u00f6rselle\u015ftirece\u011finize dair pratik bilgiler edindik. Son olarak, yap\u0131land\u0131r\u0131lm\u0131\u015f loglaman\u0131n \u00f6nemi, Correlation ID'ler, hassas veri maskeleme ve Docker\/Kubernetes gibi geli\u015fmi\u015f senaryolar\u0131 ve en iyi uygulamalar\u0131 inceleyerek entegrasyonunuzu daha da sa\u011flamla\u015ft\u0131rman\u0131n yollar\u0131n\u0131 ke\u015ffettik. Bu entegrasyon, uygulaman\u0131z\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc daha \u015feffaf hale getirerek, sorunlar\u0131 proaktif bir \u015fekilde tespit etmenize ve daha h\u0131zl\u0131 \u00e7\u00f6zmenize olanak tan\u0131r.\n<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<dl>\n<dt><strong>1. Datadog API Key'imi neden <code>appsettings.json<\/code> yerine Environment Variable olarak tutmal\u0131y\u0131m?<\/strong><\/dt>\n<dd>Hassas bilgiler olan API Key'leri ve di\u011fer s\u0131rlar\u0131 do\u011frudan <code>appsettings.json<\/code> gibi dosyalarda tutmak g\u00fcvenlik a\u00e7\u0131\u011f\u0131 olu\u015fturabilir, \u00f6zellikle bu dosyalar versiyon kontrol sistemlerine y\u00fcklenirse. Environment Variable'lar, s\u0131rlar\u0131n\u0131z\u0131 kod taban\u0131ndan ay\u0131rman\u0131n ve farkl\u0131 ortamlarda (geli\u015ftirme, test, \u00fcretim) farkl\u0131 de\u011ferler kullanman\u0131n daha g\u00fcvenli bir yoludur. Bu sayede, uygulaman\u0131z\u0131 da\u011f\u0131t\u0131rken veya Docker gibi kapsay\u0131c\u0131 ortamlar\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131rken s\u0131rlar\u0131n\u0131z\u0131 kolayca y\u00f6netebilirsiniz.<\/dd>\n<dt><strong>2. Serilog ile Datadog'a hangi t\u00fcr verileri g\u00f6nderebilirim?<\/strong><\/dt>\n<dd>Serilog ile Datadog'a temel olarak log mesajlar\u0131 g\u00f6nderebilirsiniz. Bu log mesajlar\u0131, uygulaman\u0131z\u0131n \u00e7al\u0131\u015fma zaman\u0131nda olu\u015fan olaylar\u0131 (bilgilendirici mesajlar, uyar\u0131lar, hatalar, hata ay\u0131klama bilgileri) i\u00e7erir. Yap\u0131land\u0131r\u0131lm\u0131\u015f loglama sayesinde, log mesajlar\u0131n\u0131z\u0131n yan\u0131nda \u00f6zel \u00f6zellikler (\u00f6rne\u011fin, <code>UserId<\/code>, <code>TransactionId<\/code>, <code>CorrelationId<\/code>, <code>RequestPath<\/code>) de g\u00f6nderebilirsiniz. Bu \u00f6zellikler, Datadog'da loglar\u0131n\u0131z\u0131 filtrelemek ve analiz etmek i\u00e7in paha bi\u00e7ilmezdir. Do\u011frudan metrikleri Serilog \u00fczerinden g\u00f6ndermek yerine, Datadog Agent'\u0131n DogStatsD aray\u00fcz\u00fcn\u00fc veya <code>Datadog.Trace<\/code> k\u00fct\u00fcphanesini kullanman\u0131z daha uygun olacakt\u0131r.<\/dd>\n<dt><strong>3. Datadog APM'i kullanmak i\u00e7in Serilog entegrasyonu zorunlu mu?<\/strong><\/dt>\n<dd>Hay\u0131r, Datadog APM ve Serilog entegrasyonu birbirini tamamlayan ama zorunlu olarak ba\u011fl\u0131 olmayan iki farkl\u0131 yetenektir. Datadog APM, uygulaman\u0131z\u0131n metod \u00e7a\u011fr\u0131lar\u0131n\u0131, veritaban\u0131 sorgular\u0131n\u0131 ve HTTP isteklerini otomatik olarak izler. Serilog entegrasyonu ise kodunuzda manuel olarak yazd\u0131\u011f\u0131n\u0131z log mesajlar\u0131n\u0131 Datadog'a g\u00f6nderir. Bu ikisini birlikte kullanmak, APM'in tespit etti\u011fi performans sorunlar\u0131n\u0131n k\u00f6k nedenlerini, Serilog ile g\u00f6nderdi\u011finiz detayl\u0131 log mesajlar\u0131 \u00fczerinden daha h\u0131zl\u0131 anlaman\u0131z\u0131 sa\u011flar. Yani, APM size \"ne oldu\" sorusunun cevab\u0131n\u0131 verirken, Serilog \"nas\u0131l ve neden oldu\" sorusuna daha detayl\u0131 yan\u0131tlar sunar.<\/dd>\n<dt><strong>4. Mobil uyumlu HTML i\u00e7in hangi CSS yakla\u015f\u0131mlar\u0131n\u0131 \u00f6nerirsiniz?<\/strong><\/dt>\n<dd>Mobil uyumlu HTML i\u00e7in genellikle \"Responsive Web Design\" prensipleri kullan\u0131l\u0131r. Bu prensipler, CSS Media Queries, ak\u0131\u015fkan (fluid) \u0131zgaralar (grid systems) ve esnek g\u00f6rsellerin bir kombinasyonunu i\u00e7erir. Media Queries, ekran boyutuna, cihaz y\u00f6n\u00fcne veya \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011fe g\u00f6re farkl\u0131 stiller uygulaman\u0131z\u0131 sa\u011flar. \u00d6rne\u011fin, k\u00fc\u00e7\u00fck ekranlarda \u00f6\u011felerin tek s\u00fctun halinde listelenmesi veya yaz\u0131 tipi boyutlar\u0131n\u0131n ayarlanmas\u0131 gibi. Esnek g\u00f6rseller i\u00e7in <code>max-width: 100%; height: auto;<\/code> gibi CSS kurallar\u0131 kullan\u0131l\u0131r. Flexbox ve CSS Grid gibi modern d\u00fczenleme y\u00f6ntemleri de karma\u015f\u0131k responsive tasar\u0131mlar\u0131 \u00e7ok daha kolay ve verimli hale getirir. Mobil \u00f6ncelikli (mobile-first) tasar\u0131m yakla\u015f\u0131m\u0131, k\u00fc\u00e7\u00fck ekranlar i\u00e7in temel stilleri tan\u0131mlay\u0131p, daha sonra daha b\u00fcy\u00fck ekranlar i\u00e7in stilleri \u00fczerine ekleyerek geli\u015ftirme s\u00fcrecini kolayla\u015ft\u0131r\u0131r.<\/dd>\n<\/dl>\n<style>\n    \/* Temel Stil Resetleri ve Kapsay\u0131c\u0131 Ayarlar\u0131 *\/\n    body {\n        font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n        line-height: 1.6;\n        color: #333;\n        margin: 0 auto;\n        padding: 1em;\n        max-width: 1000px; \/* Geni\u015f ekranlarda i\u00e7eri\u011fi ortala *\/\n        background-color: #f9f9f9;\n    }<\/p>\n<p>    \/* Ba\u015fl\u0131k Stil Ayarlar\u0131 *\/\n    h2 {\n        color: #2c3e50;\n        border-bottom: 2px solid #3498db;\n        padding-bottom: 0.5em;\n        margin-top: 2em;\n        font-size: 1.8em;\n    }<\/p>\n<p>    h3 {\n        color: #34495e;\n        margin-top: 1.5em;\n        font-size: 1.4em;\n    }<\/p>\n<p>    \/* Paragraf Stil Ayarlar\u0131 *\/\n    p {\n        margin-bottom: 1em;\n        text-align: justify;\n    }<\/p>\n<p>    \/* Kod Bloklar\u0131 *\/\n    pre {\n        background-color: #ecf0f1;\n        border: 1px solid #bdc3c7;\n        padding: 1em;\n        border-radius: 5px;\n        overflow-x: auto; \/* Yatay kayd\u0131rma \u00e7ubu\u011fu *\/\n    }<\/p>\n<p>    code {\n        font-family: 'Consolas', 'Monaco', monospace;\n        background-color: #e0e6e7;\n        padding: 0.2em 0.4em;\n        border-radius: 3px;\n        font-size: 0.9em;\n    }<\/p>\n<p>    pre code {\n        background-color: transparent;\n        padding: 0;\n    }<\/p>\n<p>    \/* Listeler *\/\n    ul {\n        list-style-type: disc;\n        margin-left: 20px;\n        margin-bottom: 1em;\n    }<\/p>\n<p>    ol {\n        list-style-type: decimal;\n        margin-left: 20px;\n        margin-bottom: 1em;\n    }<\/p>\n<p>    li {\n        margin-bottom: 0.5em;\n    }<\/p>\n<p>    \/* Tan\u0131m Listesi (FAQ i\u00e7in) *\/\n    dl {\n        margin-top: 1.5em;\n    }<\/p>\n<p>    dt {\n        font-weight: bold;\n        color: #3498db;\n        margin-top: 1em;\n        font-size: 1.1em;\n    }<\/p>\n<p>    dd {\n        margin-left: 1.5em;\n        margin-bottom: 0.8em;\n    }<\/p>\n<p>    \/* \u00d6zel Kutular *\/\n    .expert-tip {\n        background-color: #e8f6f3; \/* A\u00e7\u0131k ye\u015filimsi mavi *\/\n        border-left: 5px solid #1abc9c; \/* Turkuaz *\/\n        padding: 1em 1.5em;\n        margin: 1.5em 0;\n        border-radius: 4px;\n        font-style: italic;\n        color: #2c3e50;\n    }<\/p>\n<p>    .code-example-label {\n        font-weight: bold;\n        background-color: #dbeaf5; \/* A\u00e7\u0131k mavi *\/\n        color: #2980b9; \/* Koyu mavi *\/\n        padding: 0.5em 1em;\n        margin-top: 1.5em;\n        margin-bottom: 0.5em;\n        border-radius: 4px;\n        display: inline-block; \/* Sadece i\u00e7eri\u011fi kadar yer kapla *\/\n        font-size: 0.9em;\n    }<\/p>\n<p>    \/* Mobil Uyumlu Tasar\u0131m \u0130\u00e7in CSS Media Queries *\/\n    @media (max-width: 768px) {\n        body {\n            padding: 1em;\n            font-size: 0.95em;\n        }<\/p>\n<p>        h2 {\n            font-size: 1.6em;\n            margin-top: 1.5em;\n        }<\/p>\n<p>        h3 {\n            font-size: 1.2em;\n            margin-top: 1em;\n        }<\/p>\n<p>        pre {\n            padding: 0.8em;\n            font-size: 0.85em;\n        }<\/p>\n<p>        .expert-tip, .code-example-label {\n            padding: 0.8em 1em;\n            margin: 1em 0;\n        }<\/p>\n<p>        dt {\n            font-size: 1em;\n        }\n    }<\/p>\n<p>    @media (max-width: 480px) {\n        body {\n            padding: 0.5em;\n            font-size: 0.9em;\n        }<\/p>\n<p>        h2 {\n            font-size: 1.4em;\n            margin-top: 1em;\n        }<\/p>\n<p>        h3 {\n            font-size: 1.1em;\n            margin-top: 0.8em;\n        }<\/p>\n<p>        pre {\n            padding: 0.6em;\n            font-size: 0.8em;\n            white-space: pre-wrap; \/* K\u00fc\u00e7\u00fck ekranlarda uzun kod sat\u0131rlar\u0131n\u0131 sar *\/\n            word-wrap: break-word;\n        }<\/p>\n<p>        code {\n            font-size: 0.85em;\n        }<\/p>\n<p>        ul, ol {\n            margin-left: 15px;\n        }<\/p>\n<p>        .expert-tip, .code-example-label {\n            padding: 0.6em 0.8em;\n            margin: 0.8em 0;\n            font-size: 0.85em;\n        }<\/p>\n<p>        dt {\n            font-size: 0.95em;\n        }<\/p>\n<p>        dd {\n            margin-left: 1em;\n        }\n    }\n<\/style>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Modern yaz\u0131l\u0131m projelerinde performans\u0131 izlemek, hatalar\u0131 h\u0131zla tespit etmek ve genel sistem sa\u011fl\u0131\u011f\u0131n\u0131 anlamak kritik \u00f6neme sahiptir. Peki,&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1340],"tags":[],"class_list":{"0":"post-30718","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-net","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Serilog ile .NET Uygulamalar\u0131nda Datadog Entegrasyonu<\/title>\n<meta name=\"description\" content=\"Modern yaz\u0131l\u0131m projelerinde performans\u0131 izlemek, hatalar\u0131 h\u0131zla tespit etmek ve genel sistem sa\u011fl\u0131\u011f\u0131n\u0131 anlamak kritik \u00f6neme sahiptir. Peki, .NET uygulamalar\u0131n\u0131zdaki loglar\u0131 ve performans\u0131 merkezi bir platformda etkili bir \u015fekilde nas\u0131l y\u00f6netebilirsiniz? Bu makale, pop\u00fcler loglama k\u00fct\u00fcphanesi Serilog&#039;u kullanarak .NET projelerinizi Datadog ile sorunsuz bir \u015fekilde entegre etmenin ad\u0131m ad\u0131m yollar\u0131n\u0131 ve en iyi uygulamalar\u0131n\u0131 a\u00e7\u0131kl\u0131yor. Haz\u0131r m\u0131s\u0131n\u0131z?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Serilog ile .NET Uygulamalar\u0131nda Datadog Entegrasyonu\" \/>\n<meta property=\"og:description\" content=\"Modern yaz\u0131l\u0131m projelerinde performans\u0131 izlemek, hatalar\u0131 h\u0131zla tespit etmek ve genel sistem sa\u011fl\u0131\u011f\u0131n\u0131 anlamak kritik \u00f6neme sahiptir. Peki, .NET uygulamalar\u0131n\u0131zdaki loglar\u0131 ve performans\u0131 merkezi bir platformda etkili bir \u015fekilde nas\u0131l y\u00f6netebilirsiniz? Bu makale, pop\u00fcler loglama k\u00fct\u00fcphanesi Serilog&#039;u kullanarak .NET projelerinizi Datadog ile sorunsuz bir \u015fekilde entegre etmenin ad\u0131m ad\u0131m yollar\u0131n\u0131 ve en iyi uygulamalar\u0131n\u0131 a\u00e7\u0131kl\u0131yor. Haz\u0131r m\u0131s\u0131n\u0131z?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-01T03:01:24+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Serilog ile .NET Uygulamalar\u0131nda Datadog Entegrasyonu\",\"datePublished\":\"2025-10-01T03:01:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/\"},\"wordCount\":3288,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\".NET\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/\",\"name\":\"Serilog ile .NET Uygulamalar\u0131nda Datadog Entegrasyonu\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-01T03:01:24+00:00\",\"description\":\"Modern yaz\u0131l\u0131m projelerinde performans\u0131 izlemek, hatalar\u0131 h\u0131zla tespit etmek ve genel sistem sa\u011fl\u0131\u011f\u0131n\u0131 anlamak kritik \u00f6neme sahiptir. Peki, .NET uygulamalar\u0131n\u0131zdaki loglar\u0131 ve performans\u0131 merkezi bir platformda etkili bir \u015fekilde nas\u0131l y\u00f6netebilirsiniz? Bu makale, pop\u00fcler loglama k\u00fct\u00fcphanesi Serilog'u kullanarak .NET projelerinizi Datadog ile sorunsuz bir \u015fekilde entegre etmenin ad\u0131m ad\u0131m yollar\u0131n\u0131 ve en iyi uygulamalar\u0131n\u0131 a\u00e7\u0131kl\u0131yor. Haz\u0131r m\u0131s\u0131n\u0131z?\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Serilog ile .NET Uygulamalar\u0131nda Datadog Entegrasyonu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Serilog ile .NET Uygulamalar\u0131nda Datadog Entegrasyonu","description":"Modern yaz\u0131l\u0131m projelerinde performans\u0131 izlemek, hatalar\u0131 h\u0131zla tespit etmek ve genel sistem sa\u011fl\u0131\u011f\u0131n\u0131 anlamak kritik \u00f6neme sahiptir. Peki, .NET uygulamalar\u0131n\u0131zdaki loglar\u0131 ve performans\u0131 merkezi bir platformda etkili bir \u015fekilde nas\u0131l y\u00f6netebilirsiniz? Bu makale, pop\u00fcler loglama k\u00fct\u00fcphanesi Serilog'u kullanarak .NET projelerinizi Datadog ile sorunsuz bir \u015fekilde entegre etmenin ad\u0131m ad\u0131m yollar\u0131n\u0131 ve en iyi uygulamalar\u0131n\u0131 a\u00e7\u0131kl\u0131yor. Haz\u0131r m\u0131s\u0131n\u0131z?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/","og_locale":"tr_TR","og_type":"article","og_title":"Serilog ile .NET Uygulamalar\u0131nda Datadog Entegrasyonu","og_description":"Modern yaz\u0131l\u0131m projelerinde performans\u0131 izlemek, hatalar\u0131 h\u0131zla tespit etmek ve genel sistem sa\u011fl\u0131\u011f\u0131n\u0131 anlamak kritik \u00f6neme sahiptir. Peki, .NET uygulamalar\u0131n\u0131zdaki loglar\u0131 ve performans\u0131 merkezi bir platformda etkili bir \u015fekilde nas\u0131l y\u00f6netebilirsiniz? Bu makale, pop\u00fcler loglama k\u00fct\u00fcphanesi Serilog'u kullanarak .NET projelerinizi Datadog ile sorunsuz bir \u015fekilde entegre etmenin ad\u0131m ad\u0131m yollar\u0131n\u0131 ve en iyi uygulamalar\u0131n\u0131 a\u00e7\u0131kl\u0131yor. Haz\u0131r m\u0131s\u0131n\u0131z?","og_url":"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-01T03:01:24+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Serilog ile .NET Uygulamalar\u0131nda Datadog Entegrasyonu","datePublished":"2025-10-01T03:01:24+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/"},"wordCount":3288,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":[".NET"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/","url":"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/","name":"Serilog ile .NET Uygulamalar\u0131nda Datadog Entegrasyonu","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-01T03:01:24+00:00","description":"Modern yaz\u0131l\u0131m projelerinde performans\u0131 izlemek, hatalar\u0131 h\u0131zla tespit etmek ve genel sistem sa\u011fl\u0131\u011f\u0131n\u0131 anlamak kritik \u00f6neme sahiptir. Peki, .NET uygulamalar\u0131n\u0131zdaki loglar\u0131 ve performans\u0131 merkezi bir platformda etkili bir \u015fekilde nas\u0131l y\u00f6netebilirsiniz? Bu makale, pop\u00fcler loglama k\u00fct\u00fcphanesi Serilog'u kullanarak .NET projelerinizi Datadog ile sorunsuz bir \u015fekilde entegre etmenin ad\u0131m ad\u0131m yollar\u0131n\u0131 ve en iyi uygulamalar\u0131n\u0131 a\u00e7\u0131kl\u0131yor. Haz\u0131r m\u0131s\u0131n\u0131z?","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/serilog-ile-net-uygulamalarinda-datadog-entegrasyonu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Serilog ile .NET Uygulamalar\u0131nda Datadog Entegrasyonu"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30718","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=30718"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30718\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=30718"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=30718"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=30718"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}