﻿
{"id":26377,"date":"2023-06-25T22:07:29","date_gmt":"2023-06-25T22:07:29","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=26377"},"modified":"2023-06-25T22:07:29","modified_gmt":"2023-06-25T22:07:29","slug":"nette-serilog-ile-amazon-cloudwatchta-logging-islemleri","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/nette-serilog-ile-amazon-cloudwatchta-logging-islemleri\/","title":{"rendered":".NET&#8217;te Serilog \u0130le Amazon CloudWatch&#8217;ta Logging \u0130\u015flemleri"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu i\u00e7eri\u011fimizde Amazon CloudWatch servisi \u00fczerine odaklanacak ve .NET&#8217;te Serilog ile Amazon CloudWatch&#8217;a logging i\u015flemlerini ele al\u0131yor olaca\u011f\u0131z. Her \u015feyden \u00f6nce loglama s\u00fcre\u00e7lerinde kulland\u0131\u011f\u0131m\u0131z g\u00fc\u00e7l\u00fc bir k\u00fct\u00fcphane olan Serilog ve g\u00f6rselle\u015ftirme arac\u0131 olan Seq ile ilgili daha \u00f6nceden klavyeye alm\u0131\u015f oldu\u011fu <a href=\"https:\/\/www.gencayyildiz.com\/blog\/asp-net-core-serilog-ile-veri-loglama-ve-seq-ile-gorsellestirme\/\" rel=\"noopener\" target=\"_blank\">Asp.NET Core \u2013 Serilog \u0130le Veri Loglama ve Seq \u0130le G\u00f6rselle\u015ftirme<\/a> ba\u015fl\u0131kl\u0131 makaleme g\u00f6z atabilir, ard\u0131ndan bu makaleye devam edebilirsiniz. Bizler ise bu konulara vak\u0131f olanlarla yol al\u0131p, bu i\u00e7eri\u011fin ta\u015flar\u0131n\u0131 d\u00f6\u015femeye ba\u015flayal\u0131m&#8230;<\/p>\n<h3>Amazon CloudWatch Nedir?<\/h3>\n<p>Amazon CloudWatch, Amazon Web Services(AWS) taraf\u0131ndan \u00fcretilen bir izleme(monitoring) ve y\u00f6netim hizmetidir. CloudWatch; AWS servislerinin ve bu servislerde \u00e7al\u0131\u015fan uygulamalar\u0131n\u0131z\u0131n canl\u0131 s\u00fcre\u00e7lerde nas\u0131l tepki verdiklerini izlemek i\u00e7in kullan\u0131lmakta ve b\u00f6ylece uygulaman\u0131za dair altyap\u0131 sonu\u00e7lar\u0131n\u0131, performans durumlar\u0131n\u0131 ve g\u00fcvenilirli\u011fi de\u011ferlendirebilmenizi sa\u011flamaktad\u0131r. Ayr\u0131ca CloudWatch ile \u00e7e\u015fitli AWS kaynaklar\u0131n\u0131 da izleyebilir ve bu kaynaklardan istedi\u011finiz metrikleri ve loglar\u0131 kendi uygulama \u00e7er\u00e7evelerinizde kullanabilirsiniz.<\/p>\n<p>CloudWatch&#8217;\u0131n temel i\u015flevi; \u00f6l\u00e7\u00fcmler ve metriklerle ilgili veriler toplamak ve bu verileri bir aray\u00fczde yahut API arac\u0131l\u0131\u011f\u0131yla kullan\u0131labilir hale getirmektir. Toplad\u0131\u011f\u0131 metrikler; CPU kullan\u0131m\u0131, a\u011f b\u00f6l\u00fcmleri, depolama alan\u0131 kullan\u0131m\u0131 vs. gibi performans g\u00f6r\u00fcnt\u00fcs\u00fc temsil eden de\u011ferlerdir diyebiliriz. Bunlar\u0131n yan\u0131nda s\u0131kl\u0131kla kulland\u0131\u011f\u0131m\u0131z uygulamaya dair hatalar\u0131, uyar\u0131lar\u0131 ve loglar\u0131 da toplamakta ve bu verileri kullan\u0131labilir veya izlenebilir hale getirmektedir.<\/p>\n<p>T\u00fcm bunlar\u0131n d\u0131\u015f\u0131nda, CloudWatch ile belli olaylara kar\u015f\u0131l\u0131k tepki olarak otomatik i\u015flemleri ger\u00e7ekle\u015ftirebilir, filanca bir metri\u011fin belirlenmi\u015f bir adil s\u0131n\u0131r\u0131 a\u015f\u0131m\u0131 durumunda otomatik olarak k\u0131s\u0131tlamalar ba\u015flatabilir veya hata durumlar\u0131nda bildirimler g\u00f6nderebilirsiniz.<\/p>\n<h3>.NET&#8217;te Serilog \u0130le Amazon CloudWatch&#8217;ta Logging<\/h3>\n<p>.NET&#8217;te Serilog ile Amazon CloudWatch&#8217;ta loggin i\u015flemini ele alabilmek i\u00e7in basit bir uygulama \u00fczerinden pratik yapmam\u0131z gayet yeterli olacakt\u0131r kanaatindeyim. \u015eimdi bunun i\u00e7in bir Asp.NET Core API projesi olu\u015fturunuz ve ilgili projeye a\u015fa\u011f\u0131daki k\u00fct\u00fcphaneleri y\u00fckleyiniz.<\/p>\n<table>\n<thead>\n<tr>\n<th>K\u00fct\u00fcphane<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align:left;\"><a href=\"https:\/\/www.nuget.org\/packages\/AWS.Logger.SeriLog\" rel=\"noopener\" target=\"_blank\">AWS.Logger.SeriLog<\/a><\/td>\n<td style=\"text-align:left;\">Bu k\u00fct\u00fcphane, .NET uygulamalar\u0131nda Serilog kullanarak AWS CloudWatch&#8217;a loglama i\u015flemi i\u00e7in kullan\u0131lan ve AWS taraf\u0131ndan resmi olarak tan\u0131t\u0131lan bir k\u00fct\u00fcphanedir.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"https:\/\/www.nuget.org\/packages\/Serilog.AspNetCore\" rel=\"noopener\" target=\"_blank\">Serilog.AspNetCore<\/a><\/td>\n<td style=\"text-align:left;\">Bu k\u00fct\u00fcphane, Asp.NET Core uygulamalar\u0131 i\u00e7in loglama s\u00fcre\u00e7lerinde Serilog&#8217;u kullanmay\u0131 sa\u011flar.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"https:\/\/www.nuget.org\/packages\/Serilog.Settings.Configuration\" rel=\"noopener\" target=\"_blank\">Serilog.Settings.Configuration<\/a><\/td>\n<td style=\"text-align:left;\">Bu k\u00fct\u00fcphane, Serilog&#8217;un loglama yap\u0131land\u0131rmalar\u0131n\u0131 okumak i\u00e7in kullan\u0131lmaktad\u0131r.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"https:\/\/www.nuget.org\/packages\/Serilog.Sinks.Console\" rel=\"noopener\" target=\"_blank\">Serilog.Sinks.Console<\/a><\/td>\n<td style=\"text-align:left;\">Bu k\u00fct\u00fcphane ise Serilog&#8217;un toplad\u0131\u011f\u0131 bilgileri console&#8217;a yazd\u0131rmak i\u00e7in kullan\u0131lmaktad\u0131r.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>K\u00fct\u00fcphaneleri y\u00fckledikten sonra uygulaman\u0131n &#8216;Program.cs&#8217; dosyas\u0131nda a\u015fa\u011f\u0131daki gibi Serilog i\u00e7in temel yap\u0131land\u0131rmay\u0131 ger\u00e7ekle\u015ftirelim.<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nbuilder.Host.UseSerilog((_, logger) =&gt; logger.WriteTo.Console().ReadFrom.Configuration(builder.Configuration));\r\n<\/pre>\n<\/div>\n<p>Ard\u0131ndan bu yap\u0131land\u0131rmay\u0131 besleyebilmek i\u00e7in &#8216;appsettings.json&#8217; dosyas\u0131na da a\u015fa\u011f\u0131daki konfig\u00fcrasyonel de\u011ferleri ekleyelim:<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n{\r\n  &quot;Logging&quot;: {\r\n    &quot;LogLevel&quot;: {\r\n      &quot;Default&quot;: &quot;Information&quot;,\r\n      &quot;Microsoft.AspNetCore&quot;: &quot;Warning&quot;,\r\n      &quot;Microsoft&quot;: &quot;Warning&quot;\r\n    }\r\n  },\r\n  &quot;AllowedHosts&quot;: &quot;*&quot;,\r\n  &quot;Serilog&quot;: {\r\n    &quot;LogGroup&quot;: &quot;\/logs\/example&quot;,\r\n    &quot;Region&quot;: &quot;ap-south-1&quot;,\r\n    &quot;MinimumLevel&quot;: {\r\n      &quot;Default&quot;: &quot;Debug&quot;,\r\n      &quot;Override&quot;: {\r\n        &quot;Microsoft&quot;: &quot;Error&quot;,\r\n        &quot;System&quot;: &quot;Error&quot;,\r\n        &quot;Microsoft.Hosting.Lifetime&quot;: &quot;Information&quot;\r\n      }\r\n    },\r\n    &quot;WriteTo&quot;: &#x5B;\r\n      {\r\n        &quot;Name&quot;: &quot;AWSSeriLog&quot;,\r\n        &quot;Args&quot;: {\r\n          &quot;textFormatter&quot;: &quot;Serilog.Formatting.Json.JsonFormatter, Serilog&quot;\r\n        }\r\n      }\r\n    ]\r\n  }\r\n}\r\n\r\n<\/pre>\n<\/div>\n<p>Yukar\u0131daki konfig\u00fcrasyonel \u00e7al\u0131\u015fmaya g\u00f6z atarsan\u0131z e\u011fer; <em><strong>11.<\/strong><\/em> sat\u0131rdaki &#8216;LogGroup&#8217;, her uygulama veya kullan\u0131m durumu i\u00e7in CloudWatch&#8217;da ayr\u0131 bir log blo\u011funa kar\u015f\u0131l\u0131k gelen ay\u0131r\u0131c\u0131 \u00f6zelli\u011fi ifade etmekte ve bu uygulamaya \u00f6zel de &#8216;\/logs\/example&#8217; de\u011ferinde grup ad\u0131 konfig\u00fcre edilmektedir. Bunun haricinde opsiyonel olan <em><strong>12.<\/strong><\/em> sat\u0131rdaki &#8216;Region&#8217; tan\u0131m\u0131n\u0131n d\u0131\u015f\u0131ndakiler klasik Serilog konfig\u00fcrasyonuyla alakal\u0131 yap\u0131land\u0131rmalard\u0131r.<\/p>\n<p>Esas\u0131nda yap\u0131lmas\u0131 gereken t\u00fcm i\u015flemler bundan ibarettir. Bundan sonra kurulumu test edebilmek i\u00e7in basit bir controller olu\u015ftural\u0131m ve i\u00e7erisinde bir ka\u00e7 loglamayla ilgili \u00e7al\u0131\u015fma yapal\u0131m.<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    &#x5B;Route(&quot;api\/&#x5B;controller]&quot;)]\r\n    &#x5B;ApiController]\r\n    public class ValuesController : ControllerBase\r\n    {\r\n        private readonly ILogger&lt;ValuesController&gt; _logger;\r\n\r\n        public ValuesController(ILogger&lt;ValuesController&gt; logger)\r\n            =&gt; _logger = logger;\r\n\r\n        &#x5B;HttpGet]\r\n        public IActionResult Get()\r\n        {\r\n            _logger.LogDebug(&quot;Debug Log&quot;);\r\n            _logger.LogInformation(&quot;Information Log&quot;);\r\n            _logger.LogError(&quot;Error Log&quot;);\r\n            return Ok();\r\n        }\r\n    }\r\n<\/pre>\n<\/div>\n<p>Yap\u0131lan bu \u00e7al\u0131\u015fma neticesinde ilgili controller&#8217;a istek g\u00f6nderdi\u011fimizde Amazon CloudWatch&#8217;ta a\u015fa\u011f\u0131daki g\u00f6rseldeki gibi yap\u0131land\u0131rmaya uygun Log Group olu\u015fturulacak ve gerekli loglama ger\u00e7ekle\u015ftirilmi\u015f olunacakt\u0131r.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/06\/NETte-Serilog-Ile-Amazon-CloudWatchta-Logging-Islemleri.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/06\/NETte-Serilog-Ile-Amazon-CloudWatchta-Logging-Islemleri.png\" alt=\".NET&#039;te Serilog \u0130le Amazon CloudWatch&#039;ta Logging \u0130\u015flemleri\" width=\"988\" height=\"194\" class=\"aligncenter size-full wp-image-26384\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/06\/NETte-Serilog-Ile-Amazon-CloudWatchta-Logging-Islemleri.png 988w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/06\/NETte-Serilog-Ile-Amazon-CloudWatchta-Logging-Islemleri-300x59.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/06\/NETte-Serilog-Ile-Amazon-CloudWatchta-Logging-Islemleri-768x151.png 768w\" sizes=\"auto, (max-width: 988px) 100vw, 988px\" \/><\/a><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/06\/NETte-Serilog-Ile-Amazon-CloudWatchta-Logging-Islemleri-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/06\/NETte-Serilog-Ile-Amazon-CloudWatchta-Logging-Islemleri-1.png\" alt=\".NET&#039;te Serilog \u0130le Amazon CloudWatch&#039;ta Logging \u0130\u015flemleri\" width=\"1044\" height=\"219\" class=\"aligncenter size-full wp-image-26385\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/06\/NETte-Serilog-Ile-Amazon-CloudWatchta-Logging-Islemleri-1.png 1044w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/06\/NETte-Serilog-Ile-Amazon-CloudWatchta-Logging-Islemleri-1-300x63.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/06\/NETte-Serilog-Ile-Amazon-CloudWatchta-Logging-Islemleri-1-1024x215.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/06\/NETte-Serilog-Ile-Amazon-CloudWatchta-Logging-Islemleri-1-768x161.png 768w\" sizes=\"auto, (max-width: 1044px) 100vw, 1044px\" \/><\/a><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/06\/NETte-Serilog-Ile-Amazon-CloudWatchta-Logging-Islemleri-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/06\/NETte-Serilog-Ile-Amazon-CloudWatchta-Logging-Islemleri-2.png\" alt=\".NET&#039;te Serilog \u0130le Amazon CloudWatch&#039;ta Logging \u0130\u015flemleri\" width=\"1125\" height=\"493\" class=\"aligncenter size-full wp-image-26386\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/06\/NETte-Serilog-Ile-Amazon-CloudWatchta-Logging-Islemleri-2.png 1125w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/06\/NETte-Serilog-Ile-Amazon-CloudWatchta-Logging-Islemleri-2-300x131.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/06\/NETte-Serilog-Ile-Amazon-CloudWatchta-Logging-Islemleri-2-1024x449.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/06\/NETte-Serilog-Ile-Amazon-CloudWatchta-Logging-Islemleri-2-768x337.png 768w\" sizes=\"auto, (max-width: 1125px) 100vw, 1125px\" \/><\/a>Ayr\u0131ca Amazon CloudWatch&#8217;a kaydedilecek loglar\u0131n hata d\u00fczeyini de belirlemek istiyorsan\u0131z a\u015fa\u011f\u0131daki gibi <code>restrictedToMinimumLevel<\/code> \u00fczerinden bir konfig\u00fcrasyon ger\u00e7ekle\u015ftirebilirsiniz.<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n  .\r\n  .\r\n  .\r\n    &quot;WriteTo&quot;: &#x5B;\r\n      {\r\n        &quot;Name&quot;: &quot;AWSSeriLog&quot;,\r\n        &quot;Args&quot;: {\r\n          &quot;textFormatter&quot;: &quot;Serilog.Formatting.Json.JsonFormatter, Serilog&quot;,\r\n          &quot;restrictedToMinimumLevel&quot;: &quot;Error&quot;\r\n        }\r\n      }\r\n    ]\r\n<\/pre>\n<\/div>\n<p>Yukar\u0131daki gibi bir yap\u0131land\u0131rma neticesinde uygulama sadece hata(error) olan loglar\u0131 CloudWatch&#8217;a g\u00f6nderecek, di\u011ferlerini eleyecektir.<\/p>\n<p>Son olarak; geli\u015ftirdi\u011fimiz uygulaman\u0131n herhangi bir noktas\u0131nda AWS&#8217;ye dair bir kimlik do\u011frulama ger\u00e7ekle\u015ftirilmedi\u011fi halde, nas\u0131l oluyor da AWS CloudWatch&#8217;a loglar g\u00f6nderiliyor diye sorarsan\u0131z e\u011fer bunun AWS SDK&#8217;s\u0131 ile ger\u00e7ekle\u015ftirildi\u011fini bilmenizde fayda vard\u0131r. Asp.NET Core uygulamalar\u0131nda, Serilog ile yazd\u0131r\u0131lan log&#8217;lar\u0131n AWS CloudWatch&#8217;a g\u00f6nderilmesini sa\u011flamak i\u00e7in, AWS SDK&#8217;s\u0131 kullan\u0131lmakta ve b\u00f6ylece ekstradan bir yap\u0131land\u0131rmaya gerek duyulmamaktad\u0131r.<\/p>\n<p>Yap\u0131land\u0131rma dosyas\u0131ndaki &#8216;AWSSeriLog&#8217; b\u00f6l\u00fcm\u00fc, Serilog taraf\u0131ndan gelen log&#8217;lar\u0131n AWS CloudWatch&#8217;a g\u00f6nderilmesi gerekti\u011fini ifade etmekte ve bunun i\u00e7in uygulaman\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 ortamdaki AWS IAM(Identity Access Management)&#8217;den kimlik do\u011frulama i\u00e7in gerekli bilgiler edinilerek, AWS SDK&#8217;i taraf\u0131ndan kullan\u0131lmaktad\u0131r. Yani uzun laf\u0131n k\u0131sas\u0131, uygulama Serilog yap\u0131land\u0131rmas\u0131nda AWS CloudWatch hedefi i\u00e7in, AWS SDK&#8217;si sayesinde otomatik olarak IAM kimlik bilgilerini kullanarak loglar\u0131 Amazon CloudWatch&#8217;a g\u00f6ndermektedir.<\/p>\n<p>Haliyle uygulamay\u0131 ilk etapta localhost \u00fczerinde test etti\u011fimiz i\u00e7in ee do\u011fal olarak local&#8217;de ki AWS IAM profil bilgilerinin do\u011fru oldu\u011fundan emin olman\u0131z gerekmektedir.<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<p>Not : \u00d6rnek projeye a\u015fa\u011f\u0131daki github adresinden eri\u015febilirsiniz.<br \/>\n<a href=\"https:\/\/github.com\/gncyyldz\/AWS.CloudWatch.Serilog.Example\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/gncyyldz\/AWS.CloudWatch.Serilog.Example<\/a><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bu i\u00e7eri\u011fimizde Amazon CloudWatch servisi \u00fczerine odaklanacak ve .NET&#8217;te Serilog ile Amazon CloudWatch&#8217;a logging i\u015flemlerini ele al\u0131yor olaca\u011f\u0131z. Her \u015feyden \u00f6nce loglama s\u00fcre\u00e7lerinde kulland\u0131\u011f\u0131m\u0131z g\u00fc\u00e7l\u00fc bir k\u00fct\u00fcphane olan Serilog ve g\u00f6rselle\u015ftirme arac\u0131 olan&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":3014,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4730],"tags":[4879,4881,4731,4734,4747,4882,4880],"class_list":["post-26377","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aws","tag-amazon-cloudwatch","tag-amazon-web-services","tag-aws","tag-aws-iam","tag-cloudwatch","tag-identity-access-management","tag-serilog"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/26377","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=26377"}],"version-history":[{"count":7,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/26377\/revisions"}],"predecessor-version":[{"id":26388,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/26377\/revisions\/26388"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3014"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=26377"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=26377"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=26377"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}