{"id":34654,"date":"2025-11-20T08:41:04","date_gmt":"2025-11-20T05:41:04","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=34654"},"modified":"2025-11-20T08:41:04","modified_gmt":"2025-11-20T05:41:04","slug":"angular-sentry-kullanarak-hata-takibi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/","title":{"rendered":"Angular: Sentry Kullanarak Hata Takibi"},"content":{"rendered":"<p><body><\/p>\n<h2>Angular: Sentry Kullanarak Hata Takibi<\/h2>\n<h2>Giri\u015f<\/h2>\n<p>Modern web uygulamalar\u0131, kullan\u0131c\u0131 deneyimini merkeze alarak s\u00fcrekli geli\u015fmektedir. Angular gibi g\u00fc\u00e7l\u00fc bir framework ile geli\u015ftirilen tek sayfa uygulamalar\u0131 (SPA&#8217;lar), zengin etkile\u015fimler ve karma\u015f\u0131k istemci taraf\u0131 mant\u0131\u011f\u0131 sunar. Ancak bu karma\u015f\u0131kl\u0131k, ayn\u0131 zamanda hata potansiyelini de art\u0131r\u0131r. Bir uygulaman\u0131n kararl\u0131l\u0131\u011f\u0131 ve g\u00fcvenilirli\u011fi, kullan\u0131c\u0131 memnuniyeti ve i\u015f s\u00fcreklili\u011fi i\u00e7in hayati \u00f6neme sahiptir. Kullan\u0131c\u0131lar, hatalarla kar\u015f\u0131la\u015ft\u0131klar\u0131nda hayal k\u0131r\u0131kl\u0131\u011f\u0131na u\u011frar ve uygulamay\u0131 terk edebilirler. Geli\u015ftiriciler i\u00e7in ise, production ortam\u0131nda ortaya \u00e7\u0131kan bir hatay\u0131 tespit etmek, yeniden \u00fcretmek ve d\u00fczeltmek, yeterli ara\u00e7lar olmadan adeta i\u011fneyle kuyu kazmaya benzer.<\/p>\n<p>Geleneksel hata ay\u0131klama y\u00f6ntemleri (taray\u0131c\u0131 konsolu, log dosyalar\u0131), geli\u015ftirme a\u015famas\u0131nda faydal\u0131 olsa da, production ortam\u0131ndaki ger\u00e7ek d\u00fcnya senaryolar\u0131nda yetersiz kal\u0131r. Kullan\u0131c\u0131lar\u0131n farkl\u0131 cihazlarda, farkl\u0131 taray\u0131c\u0131larda, farkl\u0131 a\u011f ko\u015fullar\u0131nda ve beklenmedik veri giri\u015fleriyle kar\u015f\u0131la\u015fabilece\u011fi durumlar, hata takibini zorla\u015ft\u0131r\u0131r. \u0130\u015fte bu noktada, ger\u00e7ek zamanl\u0131 hata izleme ve performans g\u00f6zlemleme platformlar\u0131 devreye girer. Sentry, bu t\u00fcr platformlar\u0131n \u00f6nde gelen \u00f6rneklerinden biridir.<\/p>\n<p>Sentry, uygulamalar\u0131n\u0131zdaki hatalar\u0131 ve performans sorunlar\u0131n\u0131 ger\u00e7ek zamanl\u0131 olarak izlemenizi, kaydetmenizi ve analiz etmenizi sa\u011flayan a\u00e7\u0131k kaynakl\u0131 bir hata izleme arac\u0131d\u0131r. Frontend (Angular, React, Vue), backend (Node.js, Python, Java, .NET) ve mobil (iOS, Android, React Native) dahil olmak \u00fczere geni\u015f bir teknoloji yelpazesini destekler. Angular uygulamalar\u0131nda Sentry kullanmak, geli\u015ftiricilere hatalar\u0131 proaktif bir \u015fekilde tespit etme, k\u00f6k nedenlerini anlama ve h\u0131zl\u0131ca \u00e7\u00f6zme yetene\u011fi kazand\u0131r\u0131r. Bu makalede, Angular projesinde Sentry&#8217;yi nas\u0131l kuraca\u011f\u0131m\u0131z\u0131, temel ve geli\u015fmi\u015f \u00f6zelliklerini nas\u0131l kullanaca\u011f\u0131m\u0131z\u0131 ve en iyi uygulamalar\u0131 ele alaca\u011f\u0131z. Amac\u0131m\u0131z, Angular uygulamalar\u0131n\u0131z\u0131n daha kararl\u0131, g\u00fcvenilir ve s\u00fcrd\u00fcr\u00fclebilir olmas\u0131na yard\u0131mc\u0131 olmakt\u0131r.<\/p>\n<h2>Sentry Nedir?<\/h2>\n<p>Sentry, modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde hata izleme ve performans g\u00f6zlemleme ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131lamak \u00fczere tasarlanm\u0131\u015f, g\u00fc\u00e7l\u00fc bir platformdur. Uygulamalar\u0131n\u0131zda meydana gelen istisnalar\u0131, hatalar\u0131 ve potansiyel sorunlar\u0131 ger\u00e7ek zamanl\u0131 olarak yakalayarak merkezi bir kontrol paneline g\u00f6nderir. Bu sayede geli\u015ftiriciler, kullan\u0131c\u0131lar\u0131n kar\u015f\u0131la\u015ft\u0131\u011f\u0131 sorunlar\u0131 an\u0131nda g\u00f6rebilir ve h\u0131zl\u0131ca m\u00fcdahale edebilirler. Sentry, yaln\u0131zca hatalar\u0131 bildirmekle kalmaz, ayn\u0131 zamanda bu hatalar\u0131n ba\u011flam\u0131n\u0131 (context) ve k\u00f6k nedenlerini anlamak i\u00e7in zengin bilgiler sunar.<\/p>\n<h3>Temel \u00d6zellikleri<\/h3>\n<p>Sentry&#8217;nin temel \u00f6zellikleri, onu di\u011fer hata izleme ara\u00e7lar\u0131ndan ay\u0131ran ve geli\u015ftiriciler i\u00e7in vazge\u00e7ilmez k\u0131lan unsurlard\u0131r:<\/p>\n<h3>Ger\u00e7ek Zamanl\u0131 Hata Bildirimi<\/h3>\n<p>Uygulaman\u0131zda bir hata meydana geldi\u011finde, Sentry bunu an\u0131nda yakalar ve kontrol panelinize g\u00f6nderir. Bu sayede sorunlardan haberdar olmak i\u00e7in kullan\u0131c\u0131 \u015fikayetlerini beklemenize gerek kalmaz.<\/p>\n<h3>Detayl\u0131 Hata Bilgileri (Stack Traces ve Context)<\/h3>\n<p>Sentry, bir hata olu\u015ftu\u011funda sadece hatan\u0131n kendisini de\u011fil, ayn\u0131 zamanda hataya yol a\u00e7an t\u00fcm \u00e7a\u011fr\u0131 y\u0131\u011f\u0131n\u0131n\u0131 (stack trace), kullan\u0131c\u0131n\u0131n taray\u0131c\u0131\/cihaz bilgilerini, i\u015fletim sistemini, URL&#8217;i, kullan\u0131lan API isteklerini ve hatta kullan\u0131c\u0131 taraf\u0131ndan girilen verileri de kaydeder. Bu ba\u011flamsal bilgiler, hatan\u0131n nedenini anlamak ve yeniden \u00fcretmek i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h3>Ak\u0131ll\u0131 Hata Gruplama<\/h3>\n<p>Sentry, benzer hatalar\u0131 otomatik olarak grupland\u0131r\u0131r. Bu sayede ayn\u0131 hatan\u0131n y\u00fczlerce kez raporlanmas\u0131 yerine, tek bir hata olay\u0131 alt\u0131nda t\u00fcm \u00f6rnekleri g\u00f6rebilirsiniz. Bu \u00f6zellik, hata takibini \u00e7ok daha y\u00f6netilebilir hale getirir.<\/p>\n<h3>Performans \u0130zleme (APM &#8211; Application Performance Monitoring)<\/h3>\n<p>Hata takibinin yan\u0131 s\u0131ra Sentry, uygulaman\u0131z\u0131n performans\u0131n\u0131 da izleyebilir. Yava\u015f y\u00fcklenen sayfalar, uzun s\u00fcren API \u00e7a\u011fr\u0131lar\u0131 veya kullan\u0131c\u0131 etkile\u015fimlerindeki gecikmeler gibi performans sorunlar\u0131n\u0131 tespit ederek darbo\u011fazlar\u0131 belirlemenize yard\u0131mc\u0131 olur. Bu, kullan\u0131c\u0131lara daha ak\u0131c\u0131 bir deneyim sunmak i\u00e7in \u00f6nemlidir.<\/p>\n<h3>Kullan\u0131c\u0131 Geri Bildirimleri<\/h3>\n<p>Kullan\u0131c\u0131lar, bir hata ile kar\u015f\u0131la\u015ft\u0131klar\u0131nda do\u011frudan Sentry \u00fczerinden geri bildirim g\u00f6nderebilirler. Bu geri bildirimler, hatan\u0131n olu\u015ftu\u011fu an\u0131n ekran g\u00f6r\u00fcnt\u00fcs\u00fc ve kullan\u0131c\u0131n\u0131n yorumlar\u0131yla birlikte Sentry olay\u0131na eklenir. Bu, hatan\u0131n kullan\u0131c\u0131 perspektifinden anla\u015f\u0131lmas\u0131na yard\u0131mc\u0131 olur.<\/p>\n<h3>Entegrasyonlar<\/h3>\n<p>Sentry, Slack, GitHub, Jira, GitLab gibi pop\u00fcler geli\u015ftirici ara\u00e7lar\u0131 ve CI\/CD platformlar\u0131yla sorunsuz bir \u015fekilde entegre olur. Bu sayede hata bildirimlerini do\u011frudan ekiplerinizin ileti\u015fim kanallar\u0131na g\u00f6nderebilir, sorunlar\u0131 otomatik olarak g\u00f6revlere d\u00f6n\u00fc\u015ft\u00fcrebilir ve geli\u015ftirme i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 h\u0131zland\u0131rabilirsiniz.<\/p>\n<h3>Esnek Yap\u0131land\u0131rma<\/h3>\n<p>Sentry SDK&#8217;lar\u0131, hata yakalama seviyelerini, hangi hatalar\u0131n g\u00f6nderilece\u011fini, hassas verilerin nas\u0131l maskelenece\u011fini ve daha bir\u00e7ok parametreyi \u00f6zelle\u015ftirmenize olanak tan\u0131r. Bu esneklik, uygulaman\u0131z\u0131n \u00f6zel ihtiya\u00e7lar\u0131na g\u00f6re hata takibini ayarlaman\u0131z\u0131 sa\u011flar.<\/p>\n<p>\u00d6zetle, Sentry sadece bir hata izleme arac\u0131 de\u011fil, ayn\u0131 zamanda uygulaman\u0131z\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 ve performans\u0131n\u0131 kapsaml\u0131 bir \u015fekilde g\u00f6zlemlemenizi sa\u011flayan b\u00fct\u00fcnsel bir platformdur. Geli\u015ftiricilere, sorunlar\u0131 proaktif olarak tespit etme, analiz etme ve \u00e7\u00f6zme g\u00fcc\u00fc vererek, daha kaliteli ve g\u00fcvenilir yaz\u0131l\u0131mlar \u00fcretmelerine yard\u0131mc\u0131 olur.<\/p>\n<h2>Neden Angular i\u00e7in Sentry?<\/h2>\n<p>Angular, b\u00fcy\u00fck \u00f6l\u00e7ekli ve karma\u015f\u0131k istemci taraf\u0131 uygulamalar geli\u015ftirmek i\u00e7in tercih edilen g\u00fc\u00e7l\u00fc bir framework&#8217;t\u00fcr. Ancak, bu t\u00fcr uygulamalar, do\u011fas\u0131 gere\u011fi bir\u00e7ok farkl\u0131 bile\u015fenin, servisin ve d\u0131\u015f ba\u011f\u0131ml\u0131l\u0131\u011f\u0131n etkile\u015fimiyle \u00e7al\u0131\u015f\u0131r. Bu da hata olas\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r ve hatalar\u0131n kayna\u011f\u0131n\u0131 bulmay\u0131 zorla\u015ft\u0131r\u0131r. Angular uygulamalar\u0131 i\u00e7in Sentry kullanman\u0131n pek \u00e7ok avantaj\u0131 vard\u0131r:<\/p>\n<h3>\u0130stemci Taraf\u0131 Hatalar\u0131n Kapsaml\u0131 Takibi<\/h3>\n<p>Angular uygulamalar\u0131, taray\u0131c\u0131da \u00e7al\u0131\u015f\u0131r ve hatalar genellikle kullan\u0131c\u0131n\u0131n taray\u0131c\u0131s\u0131ndan, a\u011f ko\u015fullar\u0131ndan veya uygulaman\u0131n kendi mant\u0131\u011f\u0131ndan kaynaklan\u0131r. Sentry, bu istemci taraf\u0131 hatalar\u0131 (JavaScript hatalar\u0131, a\u011f hatalar\u0131, UI hatalar\u0131 vb.) yakalamak ve detayl\u0131 ba\u011flam bilgileriyle birlikte raporlamak i\u00e7in optimize edilmi\u015ftir. Bu, &#8220;benim makinemde \u00e7al\u0131\u015f\u0131yor&#8221; sorunlar\u0131n\u0131n \u00f6tesine ge\u00e7menizi sa\u011flar.<\/p>\n<h3>Ger\u00e7ek D\u00fcnya Senaryolar\u0131n\u0131 Anlama<\/h3>\n<p>Geli\u015ftirme ortam\u0131nda her senaryoyu test etmek imkans\u0131zd\u0131r. Kullan\u0131c\u0131lar, farkl\u0131 taray\u0131c\u0131 versiyonlar\u0131, i\u015fletim sistemleri, cihazlar ve a\u011f h\u0131zlar\u0131 ile uygulaman\u0131z\u0131 kullan\u0131r. Sentry, bu \u00e7e\u015fitlili\u011fin neden oldu\u011fu hatalar\u0131 yakalayarak, uygulaman\u0131z\u0131n ger\u00e7ek d\u00fcnya ko\u015fullar\u0131ndaki davran\u0131\u015f\u0131n\u0131 anlaman\u0131za yard\u0131mc\u0131 olur. Bir hatan\u0131n yaln\u0131zca belirli bir taray\u0131c\u0131da veya mobil cihazda ortaya \u00e7\u0131kt\u0131\u011f\u0131n\u0131 an\u0131nda g\u00f6rebilirsiniz.<\/p>\n<h3>Proaktif Sorun Tespiti<\/h3>\n<p>Kullan\u0131c\u0131lar bir sorunla kar\u015f\u0131la\u015ft\u0131\u011f\u0131nda \u015fikayet etmeden \u00f6nce hatay\u0131 tespit etmek, modern yaz\u0131l\u0131m geli\u015ftirmenin alt\u0131n kural\u0131d\u0131r. Sentry, hatalar\u0131 an\u0131nda bildirdi\u011fi i\u00e7in, kullan\u0131c\u0131lar bir sorun ya\u015fad\u0131\u011f\u0131n\u0131 fark etmeden veya bir ticket a\u00e7madan \u00f6nce siz sorunu \u00e7\u00f6zmeye ba\u015flayabilirsiniz. Bu, kullan\u0131c\u0131 memnuniyetini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r.<\/p>\n<h3>Angular&#8217;\u0131n Hata Y\u00f6netimi ile Entegrasyon<\/h3>\n<p>Angular, uygulamadaki istisnalar\u0131 yakalamak i\u00e7in yerle\u015fik bir <code>ErrorHandler<\/code> mekanizmas\u0131na sahiptir. Sentry, bu mekanizma ile sorunsuz bir \u015fekilde entegre edilebilir. \u00d6zel bir <code>SentryErrorHandler<\/code> olu\u015fturarak, Angular&#8217;\u0131n yakalad\u0131\u011f\u0131 t\u00fcm hatalar\u0131 Sentry&#8217;ye g\u00f6nderebilirsiniz. Bu, hata y\u00f6netimini merkezi ve tutarl\u0131 hale getirir.<\/p>\n<h3>Kullan\u0131c\u0131 Deneyimi ve Performans \u0130li\u015fkisi<\/h3>\n<p>Hatalar sadece uygulaman\u0131n \u00e7\u00f6kmesine neden olmakla kalmaz, ayn\u0131 zamanda performans d\u00fc\u015f\u00fc\u015flerine de yol a\u00e7abilir. Sentry&#8217;nin performans izleme yetenekleri sayesinde, Angular uygulamalar\u0131n\u0131zdaki yava\u015f y\u00fcklenen rotalar\u0131, uzun s\u00fcren HTTP isteklerini veya bile\u015fen render s\u00fcrelerini tespit edebilirsiniz. Bu, kullan\u0131c\u0131 deneyimini do\u011frudan etkileyen fakt\u00f6rleri iyile\u015ftirmenize olanak tan\u0131r.<\/p>\n<h3>Geli\u015ftirme S\u00fcrecinde Verimlilik Art\u0131\u015f\u0131<\/h3>\n<p>Hata ay\u0131klama, geli\u015ftirme s\u00fcrecinin en zaman al\u0131c\u0131 ve maliyetli k\u0131s\u0131mlar\u0131ndan biridir. Sentry, hatan\u0131n nerede, ne zaman ve hangi ko\u015fullar alt\u0131nda meydana geldi\u011fine dair zengin bilgiler sa\u011flayarak bu s\u00fcreci dramatik bir \u015fekilde h\u0131zland\u0131r\u0131r. Geli\u015ftiriciler, hatay\u0131 yeniden \u00fcretmek i\u00e7in saatler harcamak yerine, do\u011frudan sorunun k\u00f6k nedenine odaklanabilirler.<\/p>\n<p>\u00d6zetle, Angular uygulamalar\u0131 i\u00e7in Sentry kullanmak, uygulaman\u0131z\u0131n kararl\u0131l\u0131\u011f\u0131n\u0131, g\u00fcvenilirli\u011fini ve performans\u0131n\u0131 art\u0131rarak hem geli\u015ftiricilerin hem de kullan\u0131c\u0131lar\u0131n hayat\u0131n\u0131 kolayla\u015ft\u0131r\u0131r. Hatalar\u0131 proaktif bir \u015fekilde y\u00f6netmek, uygulaman\u0131z\u0131n ba\u015far\u0131s\u0131 i\u00e7in kritik bir ad\u0131md\u0131r.<\/p>\n<h2>Angular Projesinde Sentry Kurulumu<\/h2>\n<p>Angular projenize Sentry entegrasyonu, birka\u00e7 basit ad\u0131m\u0131 takip ederek kolayca ger\u00e7ekle\u015ftirilebilir. Bu b\u00f6l\u00fcmde, ad\u0131m ad\u0131m kurulum s\u00fcrecini ve temel yap\u0131land\u0131rmalar\u0131 ele alaca\u011f\u0131z.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<ul>\n<li>Node.js ve npm\/yarn y\u00fckl\u00fc olmal\u0131.<\/li>\n<li>Mevcut bir Angular projeniz olmal\u0131 veya yeni bir Angular projesi olu\u015fturmal\u0131s\u0131n\u0131z (<code>ng new my-app<\/code>).<\/li>\n<li>Bir Sentry hesab\u0131n\u0131z olmal\u0131 ve yeni bir Sentry projesi olu\u015fturmu\u015f olmal\u0131s\u0131n\u0131z (\u00f6rne\u011fin, &#8220;Angular&#8221; platformunu se\u00e7erek).<\/li>\n<\/ul>\n<h3>Ad\u0131m 1: Sentry Hesab\u0131 ve Projesi Olu\u015fturma<\/h3>\n<p>Sentry.io adresine gidin ve bir hesap olu\u015fturun (e\u011fer yoksa). Giri\u015f yapt\u0131ktan sonra, &#8220;Projects&#8221; b\u00f6l\u00fcm\u00fcne giderek yeni bir proje olu\u015fturun. Platform olarak &#8220;Angular&#8221;\u0131 se\u00e7ti\u011finizden emin olun. Projeyi olu\u015fturdu\u011funuzda, Sentry size bir &#8220;DSN (Data Source Name)&#8221; sa\u011flayacakt\u0131r. Bu DSN, uygulaman\u0131z\u0131n Sentry&#8217;ye hata g\u00f6ndermek i\u00e7in kullanaca\u011f\u0131 benzersiz anahtard\u0131r. DSN&#8217;i g\u00fcvenli bir yere kaydedin.<\/p>\n<h3>Ad\u0131m 2: Sentry SDK&#8217;s\u0131n\u0131 Kurma<\/h3>\n<p>Angular projenizin k\u00f6k dizininde terminali a\u00e7\u0131n ve gerekli Sentry SDK paketlerini y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">npm install @sentry\/angular @sentry\/tracing\n<h2>veya<\/h2>\nyarn add @sentry\/angular @sentry\/tracing<\/code><\/pre>\n<p><code>@sentry\/angular<\/code> paketi, Angular \u00f6zelinde hata yakalama ve ba\u011flam sa\u011flama yeteneklerini i\u00e7erirken, <code>@sentry\/tracing<\/code> paketi performans izleme (APM) \u00f6zelliklerini etkinle\u015ftirmek i\u00e7in gereklidir.<\/p>\n<h3>Ad\u0131m 3: Sentry&#8217;yi Ba\u015flatma (Initialize)<\/h3>\n<p>Sentry&#8217;yi uygulaman\u0131z\u0131n ba\u015flang\u0131\u00e7 noktas\u0131nda, yani <code>main.ts<\/code> dosyas\u0131nda ba\u015flatman\u0131z en iyi yakla\u015f\u0131md\u0131r. Bu, uygulaman\u0131z\u0131n ilk an\u0131ndan itibaren hatalar\u0131 yakalamaya ba\u015flamas\u0131n\u0131 sa\u011flar. DSN&#8217;i do\u011frudan kodda tutmak yerine, <code>environment.ts<\/code> dosyalar\u0131n\u0131 kullanarak farkl\u0131 ortamlar i\u00e7in (development, production) farkl\u0131 DSN&#8217;ler veya yap\u0131land\u0131rmalar sa\u011flamak daha iyi bir pratiktir.<\/p>\n<p>\u00d6ncelikle, <code>src\/environments\/environment.ts<\/code> ve <code>src\/environments\/environment.prod.ts<\/code> dosyalar\u0131n\u0131za Sentry DSN&#8217;inizi ekleyin:<\/p>\n<p><strong><code>src\/environments\/environment.ts<\/code> (Geli\u015ftirme Ortam\u0131)<\/strong><\/p>\n<pre><code class=\"language-typescript\">export const environment = {\n  production: false,\n  sentry: {\n    dsn: 'YOUR_DEVELOPMENT_SENTRY_DSN', \/\/ Geli\u015ftirme DSN'i veya null\n    enabled: false, \/\/ Geli\u015ftirme ortam\u0131nda Sentry'yi devre d\u0131\u015f\u0131 b\u0131rakabilirsiniz\n  },\n};<\/code><\/pre>\n<p><strong><code>src\/environments\/environment.prod.ts<\/code> (\u00dcretim Ortam\u0131)<\/strong><\/p>\n<pre><code class=\"language-typescript\">export const environment = {\n  production: true,\n  sentry: {\n    dsn: 'YOUR_PRODUCTION_SENTRY_DSN', \/\/ \u00dcretim DSN'i\n    enabled: true,\n  },\n};<\/code><\/pre>\n<p>\u015eimdi <code>src\/main.ts<\/code> dosyas\u0131nda Sentry&#8217;yi ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-typescript\">import { enableProdMode } from '@angular\/core';\nimport { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n\nimport { AppModule } from '.\/app\/app.module';\nimport { environment } from '.\/environments\/environment';\n\nimport * as Sentry from '@sentry\/angular';\nimport { Integrations } from '@sentry\/tracing';\n\nif (environment.production) {\n  enableProdMode();\n}\n\nif (environment.sentry.enabled && environment.sentry.dsn) {\n  Sentry.init({\n    dsn: environment.sentry.dsn,\n    integrations: [\n      \/\/ Taray\u0131c\u0131 ve Angular ile ilgili otomatik izlemeyi etkinle\u015ftirir\n      new Integrations.BrowserTracing({\n        routingInstrumentation: Sentry.routingInstrumentation,\n      }),\n    ],\n    \/\/ Hatalar\u0131n % ka\u00e7\u0131n\u0131n performans izlemesi i\u00e7in \u00f6rneklenmesi gerekti\u011fini ayarlar.\n    \/\/ %1.0 (100%) t\u00fcm i\u015flemleri izler, bu genellikle \u00e7ok fazla olabilir.\n    \/\/ %0.1 (10%) iyi bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.\n    tracesSampleRate: 0.1,\n    \/\/ Uygulaman\u0131z\u0131n s\u00fcr\u00fcm\u00fcn\u00fc belirtin. Bu, hatalar\u0131 belirli s\u00fcr\u00fcmlerle ili\u015fkilendirmenize yard\u0131mc\u0131 olur.\n    release: 'my-angular-app@1.0.0', \/\/ CI\/CD s\u00fcrecinde otomatik g\u00fcncellenebilir\n    \/\/ Ortam ad\u0131n\u0131 belirtin (\u00f6rn: 'production', 'development', 'staging')\n    environment: environment.production ? 'production' : 'development',\n  });\n}\n\nplatformBrowserDynamic()\n  .bootstrapModule(AppModule)\n  .catch((err) => console.error(err));<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rmada:<br \/>\n*   <code>dsn<\/code>: Sentry projenizin DSN&#8217;i.<br \/>\n*   <code>integrations<\/code>: Sentry&#8217;nin farkl\u0131 \u00f6zelliklerini etkinle\u015ftiren eklentilerdir. <code>BrowserTracing<\/code> Angular y\u00f6nlendirme olaylar\u0131n\u0131 otomatik olarak izleyerek performans verilerini toplar.<br \/>\n*   <code>tracesSampleRate<\/code>: Performans izleme i\u00e7in olaylar\u0131n y\u00fczde ka\u00e7\u0131n\u0131n \u00f6rneklenmesi gerekti\u011fini belirler. 0.1, olaylar\u0131n %10&#8217;unun izlenece\u011fi anlam\u0131na gelir.<br \/>\n*   <code>release<\/code>: Uygulaman\u0131z\u0131n mevcut s\u00fcr\u00fcm\u00fcn\u00fc belirtir. Bu, Sentry&#8217;de hatalar\u0131 belirli s\u00fcr\u00fcmlere g\u00f6re filtrelemenize olanak tan\u0131r. Genellikle CI\/CD s\u00fcrecinde otomatik olarak g\u00fcncellenir.<br \/>\n*   <code>environment<\/code>: Hatan\u0131n hangi ortamdan geldi\u011fini belirtir (\u00f6rn: <code>production<\/code>, <code>development<\/code>, <code>staging<\/code>).<\/p>\n<h3>Ad\u0131m 4: Angular&#8217;\u0131n Hata \u0130\u015fleyicisini Sentry ile Entegre Etme<\/h3>\n<p>Angular, uygulamada yakalanmayan istisnalar\u0131 i\u015flemek i\u00e7in bir <code>ErrorHandler<\/code> servisi sa\u011flar. Bu servisi kendi \u00f6zel <code>SentryErrorHandler<\/code> s\u0131n\u0131f\u0131n\u0131zla ge\u00e7ersiz k\u0131larak, Angular&#8217;\u0131n yakalad\u0131\u011f\u0131 t\u00fcm hatalar\u0131 Sentry&#8217;ye g\u00f6nderebiliriz.<\/p>\n<p><code>src\/app\/sentry-error-handler.ts<\/code> ad\u0131nda yeni bir dosya olu\u015fturun:<\/p>\n<pre><code class=\"language-typescript\">import { ErrorHandler, Injectable } from '@angular\/core';\nimport * as Sentry from '@sentry\/angular';\nimport { environment } from '..\/environments\/environment';\n\n@Injectable()\nexport class SentryErrorHandler implements ErrorHandler {\n  constructor() {}\n\n  handleError(error: any): void {\n    \/\/ Angular'\u0131n orijinal hata i\u015fleyicisinin davran\u0131\u015f\u0131n\u0131 koruyabiliriz.\n    \/\/ Konsola hata basmak gibi.\n    \/\/ console.error(error); \/\/ \u0130ste\u011fe ba\u011fl\u0131\n\n    \/\/ Sadece Sentry etkinse ve DSN tan\u0131ml\u0131ysa hata g\u00f6nder\n    if (environment.sentry.enabled && environment.sentry.dsn) {\n      Sentry.captureException(error);\n    }\n  }\n}<\/code><\/pre>\n<p>\u015eimdi bu \u00f6zel hata i\u015fleyiciyi <code>app.module.ts<\/code> dosyan\u0131zda sa\u011flay\u0131n:<\/p>\n<pre><code class=\"language-typescript\">import { NgModule, ErrorHandler } from '@angular\/core';\nimport { BrowserModule } from '@angular\/platform-browser';\nimport { HttpClientModule } from '@angular\/common\/http'; \/\/ E\u011fer HTTP istekleri yap\u0131yorsan\u0131z\n\nimport { AppRoutingModule } from '.\/app-routing.module';\nimport { AppComponent } from '.\/app.component';\nimport { SentryErrorHandler } from '.\/sentry-error-handler'; \/\/ \u00d6zel hata i\u015fleyicimizi import ediyoruz\n\n@NgModule({\n  declarations: [AppComponent],\n  imports: [BrowserModule, AppRoutingModule, HttpClientModule],\n  providers: [\n    { provide: ErrorHandler, useClass: SentryErrorHandler }, \/\/ SentryErrorHandler'\u0131 sa\u011fl\u0131yoruz\n  ],\n  bootstrap: [AppComponent],\n})\nexport class AppModule {}<\/code><\/pre>\n<p>Bu ad\u0131mlarla, Angular uygulaman\u0131zdaki t\u00fcm yakalanmayan hatalar art\u0131k Sentry&#8217;ye g\u00f6nderilecektir.<\/p>\n<h3>Ad\u0131m 5: Kurulumu Test Etme<\/h3>\n<p>Sentry entegrasyonunuzun do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in kas\u0131tl\u0131 olarak bir hata olu\u015fturabilirsiniz. \u00d6rne\u011fin, <code>app.component.ts<\/code> dosyan\u0131za basit bir hata f\u0131rlatan buton ekleyin:<\/p>\n<pre><code class=\"language-typescript\">import { Component } from '@angular\/core';\n\n@Component({\n  selector: 'app-root',\n  template: <code>\n    \n    <button (click)=\"throwError()\">Hata Olu\u015ftur<\/button>\n    <router-outlet><\/router-outlet>\n  <\/code>,\n  styleUrls: ['.\/app.component.scss'],\n})\nexport class AppComponent {\n  title = 'my-app';\n\n  throwError(): void {\n    throw new Error('Bu bir Sentry test hatas\u0131d\u0131r!');\n  }\n}<\/code><\/pre>\n<p>Uygulaman\u0131z\u0131 production modunda (veya Sentry&#8217;nin etkin oldu\u011fu bir ortamda) \u00e7al\u0131\u015ft\u0131r\u0131n (<code>ng serve --configuration=production<\/code>) ve butona t\u0131klay\u0131n. K\u0131sa bir s\u00fcre sonra, Sentry kontrol panelinizde bu hatay\u0131 g\u00f6rmelisiniz.<\/p>\n<p>Bu ad\u0131mlarla, Angular projenizde Sentry&#8217;yi ba\u015far\u0131yla kurmu\u015f ve temel hata takibini etkinle\u015ftirmi\u015f olursunuz. Art\u0131k uygulaman\u0131zdaki hatalar\u0131 ger\u00e7ek zamanl\u0131 olarak izleyebilir ve y\u00f6netebilirsiniz.<\/p>\n<h2>Geli\u015fmi\u015f Sentry \u00d6zellikleri ile Angular<\/h2>\n<p>Sentry, sadece temel hata yakalaman\u0131n \u00f6tesinde, hatalar\u0131n k\u00f6k nedenlerini daha iyi anlamak ve uygulama performans\u0131n\u0131 optimize etmek i\u00e7in bir dizi geli\u015fmi\u015f \u00f6zellik sunar. Bu b\u00f6l\u00fcmde, Angular uygulaman\u0131zda bu geli\u015fmi\u015f \u00f6zellikleri nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 inceleyece\u011fiz.<\/p>\n<h3>Kullan\u0131c\u0131 Ba\u011flam\u0131 (User Context) Ekleme<\/h3>\n<p>Bir hata meydana geldi\u011finde, hangi kullan\u0131c\u0131n\u0131n etkilendi\u011fini bilmek sorun giderme i\u00e7in \u00e7ok \u00f6nemlidir. Sentry, oturum a\u00e7m\u0131\u015f kullan\u0131c\u0131lar\u0131n kimli\u011fini ve di\u011fer ilgili bilgilerini hata olaylar\u0131na eklemenizi sa\u011flar.<\/p>\n<pre><code class=\"language-typescript\">import * as Sentry from '@sentry\/angular';\n\n\/\/ Kullan\u0131c\u0131 oturum a\u00e7t\u0131\u011f\u0131nda bu kodu \u00e7a\u011f\u0131r\u0131n\nlogin(user: any) {\n  Sentry.setUser({\n    id: user.id,\n    email: user.email,\n    username: user.username,\n    \/\/ Di\u011fer \u00f6zel bilgiler...\n  });\n  \/\/ ...\n}\n\n\/\/ Kullan\u0131c\u0131 oturumu kapatt\u0131\u011f\u0131nda veya kimli\u011fi bilinmedi\u011finde\nlogout() {\n  Sentry.setUser(null); \/\/ Kullan\u0131c\u0131 ba\u011flam\u0131n\u0131 temizle\n  \/\/ ...\n}<\/code><\/pre>\n<p><code>Sentry.setUser()<\/code> metodu ile kullan\u0131c\u0131 kimli\u011fi, e-posta, kullan\u0131c\u0131 ad\u0131 gibi bilgileri hata olaylar\u0131na ekleyebilirsiniz. Bu sayede Sentry panelinde hatalar\u0131 belirli kullan\u0131c\u0131lara g\u00f6re filtreleyebilir ve kimlerin etkilendi\u011fini g\u00f6rebilirsiniz.<\/p>\n<h3>Ekmek K\u0131r\u0131nt\u0131lar\u0131 (Breadcrumbs)<\/h3>\n<p>Ekmek k\u0131r\u0131nt\u0131lar\u0131, bir hata olu\u015fmadan \u00f6nce kullan\u0131c\u0131n\u0131n uygulama i\u00e7inde yapt\u0131\u011f\u0131 eylemleri (gezinme, t\u0131klamalar, HTTP istekleri, konsol mesajlar\u0131 vb.) g\u00f6steren bir olay dizisidir. Sentry SDK&#8217;s\u0131 bir\u00e7ok breadcrumb&#8217;\u0131 otomatik olarak yakalar. Ancak manuel olarak da ekmek k\u0131r\u0131nt\u0131lar\u0131 ekleyerek daha spesifik bir ba\u011flam sa\u011flayabilirsiniz.<\/p>\n<pre><code class=\"language-typescript\">import * as Sentry from '@sentry\/angular';\n\n\/\/ \u00d6rne\u011fin, bir form g\u00f6nderimi \u00f6ncesinde\nsubmitForm(formData: any) {\n  Sentry.addBreadcrumb({\n    category: 'form',\n    message: 'Kullan\u0131c\u0131 formu g\u00f6ndermeye \u00e7al\u0131\u015ft\u0131',\n    data: {\n      formName: 'Kaydolma Formu',\n      \/\/ formData.username, formData.email gibi hassas olmayan veriler\n    },\n    level: 'info',\n  });\n  \/\/ Form g\u00f6nderme mant\u0131\u011f\u0131...\n}\n\n\/\/ Bir API \u00e7a\u011fr\u0131s\u0131 \u00f6ncesinde\nfetchData(url: string) {\n  Sentry.addBreadcrumb({\n    category: 'http',\n    message: <code>API \u00e7a\u011fr\u0131s\u0131: ${url}<\/code>,\n    level: 'info',\n  });\n  \/\/ HTTP iste\u011fi yapma mant\u0131\u011f\u0131...\n}<\/code><\/pre>\n<p>Bu, bir hata meydana geldi\u011finde kullan\u0131c\u0131n\u0131n tam olarak ne yapt\u0131\u011f\u0131n\u0131 anlaman\u0131za yard\u0131mc\u0131 olur.<\/p>\n<h3>\u00d6zel Etiketler (Custom Tags) ve Ekstra Veriler (Extra Data)<\/h3>\n<p>Hata olaylar\u0131na \u00f6zel etiketler ve ek veriler ekleyerek, hatalar\u0131 daha iyi kategorize edebilir ve filtreleyebilirsiniz.<\/p>\n<pre><code class=\"language-typescript\">import * as Sentry from '@sentry\/angular';\n\n\/\/ \u00d6zel bir etiket ekleme (\u00f6rne\u011fin, uygulaman\u0131n mod\u00fcl\u00fc)\nSentry.setTag('module', 'dashboard');\n\n\/\/ Ekstra veri ekleme (hata ay\u0131klama i\u00e7in faydal\u0131 olabilecek herhangi bir JSON veri)\nSentry.setExtra('configVersion', 'v2.1');\nSentry.setExtra('userPreferences', { theme: 'dark', language: 'tr' });\n\n\/\/ Bir kapsam (scope) i\u00e7inde etiket ve ekstra veri ayarlama\nSentry.withScope(scope => {\n  scope.setTag('component', 'ProductDetail');\n  scope.setExtra('productId', 123);\n  scope.captureException(new Error('\u00dcr\u00fcn detay\u0131 y\u00fcklenemedi'));\n});<\/code><\/pre>\n<p><code>setTag()<\/code> ile anahtar-de\u011fer \u00e7iftleri halinde etiketler ekleyebilir, <code>setExtra()<\/code> ile daha karma\u015f\u0131k veri yap\u0131lar\u0131n\u0131 ekleyebilirsiniz. <code>withScope()<\/code> ise belirli bir hata olay\u0131 veya i\u015flem i\u00e7in ge\u00e7ici olarak ba\u011flam verileri ayarlaman\u0131za olanak tan\u0131r.<\/p>\n<h3>S\u00fcr\u00fcm Y\u00f6netimi (Release Management)<\/h3>\n<p>Sentry&#8217;de s\u00fcr\u00fcm takibi, hatalar\u0131 belirli uygulama s\u00fcr\u00fcmleriyle ili\u015fkilendirmenizi sa\u011flar. Bu, yeni bir s\u00fcr\u00fcm yay\u0131nlad\u0131\u011f\u0131n\u0131zda hatalar\u0131n art\u0131p artmad\u0131\u011f\u0131n\u0131 veya belirli bir s\u00fcr\u00fcmdeki hatalar\u0131 h\u0131zl\u0131ca izole etmenizi kolayla\u015ft\u0131r\u0131r.<\/p>\n<p><code>main.ts<\/code> dosyas\u0131nda <code>release<\/code> de\u011ferini dinamik olarak ayarlamak en iyisidir. Genellikle bu, CI\/CD s\u00fcrecinde otomatik olarak yap\u0131l\u0131r. \u00d6rne\u011fin, <code>package.json<\/code> dosyan\u0131zdaki s\u00fcr\u00fcm\u00fc kullanabilirsiniz:<\/p>\n<pre><code class=\"language-typescript\">\/\/ main.ts dosyas\u0131nda\n\/\/ ...\nimport packageInfo from '..\/..\/package.json'; \/\/ package.json dosyas\u0131n\u0131 import edin\n\nif (environment.sentry.enabled && environment.sentry.dsn) {\n  Sentry.init({\n    \/\/ ...\n    release: <code>my-angular-app@${packageInfo.version}<\/code>,\n    \/\/ ...\n  });\n}<\/code><\/pre>\n<p><code>package.json<\/code> dosyas\u0131n\u0131 TypeScript&#8217;te import edebilmek i\u00e7in <code>tsconfig.json<\/code> dosyan\u0131za <code>\"resolveJsonModule\": true<\/code> ve <code>\"esModuleInterop\": true<\/code> eklemeniz gerekebilir.<\/p>\n<h3>Performans \u0130zleme (APM &#8211; Application Performance Monitoring)<\/h3>\n<p><code>@sentry\/tracing<\/code> paketi ile Angular uygulaman\u0131z\u0131n performans\u0131n\u0131 izleyebilirsiniz. Bu, yava\u015f y\u00fcklenen rotalar\u0131, uzun s\u00fcren HTTP isteklerini ve di\u011fer performans darbo\u011fazlar\u0131n\u0131 tespit etmenize yard\u0131mc\u0131 olur.<\/p>\n<p><code>main.ts<\/code> dosyas\u0131nda zaten <code>BrowserTracing<\/code> entegrasyonunu eklemi\u015ftik:<\/p>\n<pre><code class=\"language-typescript\">import { Integrations } from '@sentry\/tracing';\n\/\/ ...\nSentry.init({\n  \/\/ ...\n  integrations: [\n    new Integrations.BrowserTracing({\n      routingInstrumentation: Sentry.routingInstrumentation,\n      \/\/ URL'leri gruplamak i\u00e7in regex tan\u0131mlayabilirsiniz\n      \/\/ \u00d6rne\u011fin, \/users\/123 ve \/users\/456'y\u0131 \/users\/:id olarak gruplamak i\u00e7in\n      \/\/ tracingOrigins: ['localhost', 'my-api.com', \/^\\\/\/],\n    }),\n  ],\n  tracesSampleRate: 0.1, \/\/ \u0130\u015flemlerin %10'unu \u00f6rnekle\n  \/\/ ...\n});<\/code><\/pre>\n<p><code>routingInstrumentation: Sentry.routingInstrumentation<\/code> sayesinde, Angular Router olaylar\u0131 otomatik olarak Sentry&#8217;de i\u015flemler (transactions) olarak kaydedilir. Bu, her bir rota de\u011fi\u015fiminin ne kadar s\u00fcrd\u00fc\u011f\u00fcn\u00fc ve bu i\u015flem i\u00e7inde hangi alt i\u015flemlerin (spans) (\u00f6rn. HTTP istekleri) ger\u00e7ekle\u015fti\u011fini g\u00f6rmenizi sa\u011flar.<\/p>\n<p>Manuel i\u015flemler ve alt i\u015flemler de olu\u015fturabilirsiniz:<\/p>\n<pre><code class=\"language-typescript\">import * as Sentry from '@sentry\/angular';\n\nasync loadProduct(productId: string) {\n  const transaction = Sentry.startTransaction({ name: <code>Load Product ${productId}<\/code> });\n  Sentry.configureScope(scope => scope.setSpan(transaction));\n\n  try {\n    const apiSpan = transaction.startChild({ op: 'api-call', description: 'Fetch product from API' });\n    const product = await this.productService.getProduct(productId).toPromise();\n    apiSpan.finish();\n\n    const renderSpan = transaction.startChild({ op: 'render', description: 'Render product details' });\n    \/\/ \u00dcr\u00fcn detaylar\u0131n\u0131 render etme mant\u0131\u011f\u0131\n    renderSpan.finish();\n\n    return product;\n  } catch (error) {\n    Sentry.captureException(error);\n    throw error;\n  } finally {\n    transaction.finish();\n  }\n}<\/code><\/pre>\n<p>Bu \u00f6rnek, belirli bir i\u015f ak\u0131\u015f\u0131n\u0131n (\u00fcr\u00fcn y\u00fckleme) performans\u0131n\u0131 manuel olarak izlemenizi sa\u011flar ve API \u00e7a\u011fr\u0131lar\u0131 ile render i\u015flemlerinin ne kadar s\u00fcrd\u00fc\u011f\u00fcn\u00fc ayr\u0131 ayr\u0131 g\u00f6sterir.<\/p>\n<h3>Kaynak Haritalar\u0131 (Source Maps)<\/h3>\n<p>Minify edilmi\u015f ve birle\u015ftirilmi\u015f JavaScript kodunda hatalar\u0131 ay\u0131klamak zordur. Sentry&#8217;ye kaynak haritalar\u0131n\u0131z\u0131 y\u00fckleyerek, hata izlemelerinin orijinal, okunabilir kodunuzu g\u00f6stermesini sa\u011flayabilirsiniz.<\/p>\n<p>Kaynak haritalar\u0131n\u0131 Sentry&#8217;ye y\u00fcklemek i\u00e7in genellikle Sentry CLI arac\u0131 kullan\u0131l\u0131r ve bu i\u015flem CI\/CD pipeline&#8217;\u0131n\u0131z\u0131n bir par\u00e7as\u0131 olmal\u0131d\u0131r.<\/p>\n<p>1.  <strong>Sentry CLI Kurulumu<\/strong>:<\/p>\n<pre><code class=\"language-bash\">npm install -g @sentry\/cli<\/code><\/pre>\n<p>2.  <strong>Sentry CLI Yap\u0131land\u0131rmas\u0131<\/strong>:<br \/>\n    <code>~\/.sentryclirc<\/code> dosyan\u0131z\u0131 olu\u015fturun veya d\u00fczenleyin:<\/p>\n<pre><code class=\"language-ini\">[auth]\n    token=YOUR_SENTRY_AUTH_TOKEN # Sentry ayarlar\u0131n\u0131zdan al\u0131n\n\n    [defaults]\n    org=YOUR_ORG_SLUG\n    project=YOUR_PROJECT_SLUG<\/code><\/pre>\n<p>3.  <strong>CI\/CD S\u00fcrecinde Kaynak Haritalar\u0131n\u0131 Y\u00fckleme<\/strong>:<br \/>\n    Angular projenizi build ettikten sonra (genellikle <code>ng build --prod --source-map<\/code>), a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131rarak kaynak haritalar\u0131n\u0131 Sentry&#8217;ye y\u00fckleyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\"># Yeni bir s\u00fcr\u00fcm olu\u015ftur\n    sentry-cli releases new \"my-angular-app@1.0.0\"\n\n    # Kaynak haritalar\u0131n\u0131 y\u00fckle\n    sentry-cli releases files \"my-angular-app@1.0.0\" upload-sourcemaps .\/dist\/my-angular-app --url-prefix '~\/assets'\n\n    # S\u00fcr\u00fcm\u00fc finalize et\n    sentry-cli releases finalize \"my-angular-app@1.0.0\"<\/code><\/pre>\n<p>    <code>--url-prefix<\/code> \u00f6nemli bir parametredir; taray\u0131c\u0131n\u0131n kaynak haritalar\u0131n\u0131 arad\u0131\u011f\u0131 yolu Sentry&#8217;ye bildirir. Angular varsay\u0131lan olarak <code>assets<\/code> klas\u00f6r\u00fcne statik dosyalar\u0131 koyar ve genellikle <code>\/assets<\/code> \u00f6nekiyle sunulur. Bu de\u011feri kendi sunum yolunuza g\u00f6re ayarlamal\u0131s\u0131n\u0131z. <code>my-angular-app@1.0.0<\/code> yerine <code>package.json<\/code>&#8216;dan okunan dinamik bir s\u00fcr\u00fcm kullanmak en iyisidir.<\/p>\n<p>Bu geli\u015fmi\u015f \u00f6zellikler, Angular uygulaman\u0131z\u0131n hatalar\u0131n\u0131 ve performans\u0131n\u0131 daha derinlemesine anlaman\u0131za ve kullan\u0131c\u0131lar\u0131n\u0131za daha iyi bir deneyim sunman\u0131za olanak tan\u0131r.<\/p>\n<h2>Angular&#8217;da Sentry \u0130\u00e7in En \u0130yi Uygulamalar<\/h2>\n<p>Sentry&#8217;yi Angular uygulaman\u0131zla kullan\u0131rken, en iyi uygulamalar\u0131 takip etmek hem hata takibinin etkinli\u011fini art\u0131racak hem de gereksiz maliyetlerden veya veri gizlili\u011fi sorunlar\u0131ndan ka\u00e7\u0131nman\u0131z\u0131 sa\u011flayacakt\u0131r.<\/p>\n<h3>Ko\u015fullu Ba\u015flatma (Conditional Initialization)<\/h3>\n<p>Sentry&#8217;yi yaln\u0131zca belirli ortamlarda (\u00f6rne\u011fin, <code>production<\/code> ve <code>staging<\/code>) ba\u015flatmak iyi bir uygulamad\u0131r. Geli\u015ftirme ortam\u0131nda her hatay\u0131 Sentry&#8217;ye g\u00f6ndermek, gereksiz g\u00fcr\u00fclt\u00fc olu\u015fturabilir ve Sentry kotalar\u0131n\u0131z\u0131 h\u0131zla t\u00fcketebilir. <code>environment.ts<\/code> dosyalar\u0131n\u0131 kullanarak bu kontrol\u00fc sa\u011flayabilirsiniz, daha \u00f6nce yapt\u0131\u011f\u0131m\u0131z gibi:<\/p>\n<pre><code class=\"language-typescript\">\/\/ main.ts\nimport { environment } from '.\/environments\/environment';\nimport * as Sentry from '@sentry\/angular';\n\nif (environment.sentry.enabled && environment.sentry.dsn) {\n  Sentry.init({\n    dsn: environment.sentry.dsn,\n    \/\/ ... di\u011fer yap\u0131land\u0131rmalar\n  });\n}<\/code><\/pre>\n<p>Bu, geli\u015ftirme s\u0131ras\u0131nda Sentry&#8217;nin devre d\u0131\u015f\u0131 kalmas\u0131n\u0131 ve yaln\u0131zca \u00fcretimde etkinle\u015fmesini sa\u011flar.<\/p>\n<h3>Hassas Veri Maskeleme ve Filtreleme<\/h3>\n<p>Kullan\u0131c\u0131lar\u0131n ki\u015fisel olarak tan\u0131mlanabilir bilgilerini (PII) veya di\u011fer hassas verileri Sentry&#8217;ye g\u00f6ndermekten ka\u00e7\u0131nmak \u00e7ok \u00f6nemlidir. Sentry, bu t\u00fcr verileri otomatik olarak maskelemek veya filtrelemek i\u00e7in \u00e7e\u015fitli mekanizmalar sunar:<\/p>\n<p>*   <strong><code>inboundFilters<\/code> entegrasyonu<\/strong>: Belirli URL&#8217;lerden, hata mesajlar\u0131ndan veya y\u0131\u011f\u0131n izlerinden gelen olaylar\u0131 filtreleyebilirsiniz.<br \/>\n*   <strong><code>beforeSend<\/code> callback&#8217;i<\/strong>: Bir hata olay\u0131 Sentry&#8217;ye g\u00f6nderilmeden hemen \u00f6nce tetiklenen bir fonksiyondur. Bu fonksiyonda, olay\u0131 inceleyebilir, hassas verileri kald\u0131rabilir veya hatta olay\u0131n g\u00f6nderilmesini tamamen iptal edebilirsiniz.<\/p>\n<pre><code class=\"language-typescript\">\/\/ main.ts\nSentry.init({\n  \/\/ ...\n  beforeSend(event, hint) {\n    \/\/ \u00d6rne\u011fin, belirli bir hatay\u0131 g\u00f6nderme\n    if (event.message && event.message.includes('Ignore this error')) {\n      return null; \/\/ Olay\u0131 g\u00f6nderme\n    }\n\n    \/\/ Hassas verileri temizleme (\u00f6rne\u011fin, bir formdaki parola alan\u0131n\u0131)\n    if (event.request && event.request.data) {\n      \/\/ event.request.data genellikle string veya object olabilir\n      if (typeof event.request.data === 'string') {\n        event.request.data = event.request.data.replace(\/password=([^&]+)\/g, 'password=[MASKED]');\n      } else if (typeof event.request.data === 'object' && event.request.data !== null) {\n        if ('password' in event.request.data) {\n          event.request.data.password = '[MASKED]';\n        }\n      }\n    }\n\n    return event; \/\/ De\u011fi\u015ftirilmi\u015f olay\u0131 g\u00f6nder\n  },\n});<\/code><\/pre>\n<p>GDPR ve di\u011fer veri gizlili\u011fi d\u00fczenlemelerine uymak i\u00e7in bu ad\u0131mlar hayati \u00f6neme sahiptir.<\/p>\n<h3>Hata Gruplamas\u0131n\u0131 Anlama ve Y\u00f6netme<\/h3>\n<p>Sentry, benzer hatalar\u0131 otomatik olarak grupland\u0131r\u0131r. Bu, ayn\u0131 k\u00f6k nedene sahip binlerce hatay\u0131 tek bir sorun olarak g\u00f6rmenizi sa\u011flar. Ancak bazen Sentry&#8217;nin gruplamas\u0131 beklentilerinizi kar\u015f\u0131lamayabilir.<\/p>\n<p>*   <strong><code>fingerprint<\/code> \u00f6zelli\u011fi<\/strong>: Bir olay\u0131n <code>fingerprint<\/code>&#8216;ini manuel olarak ayarlayarak, Sentry&#8217;nin gruplama mant\u0131\u011f\u0131n\u0131 ge\u00e7ersiz k\u0131labilirsiniz. Bu, farkl\u0131 g\u00f6r\u00fcnen ancak ayn\u0131 k\u00f6k nedene sahip hatalar\u0131 bir araya getirmek veya benzer g\u00f6r\u00fcnen ancak farkl\u0131 k\u00f6k nedenlere sahip hatalar\u0131 ay\u0131rmak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<br \/>\n*   <strong>Sentry UI&#8217;dan Gruplama Kurallar\u0131<\/strong>: Sentry kontrol panelinden de gruplama kurallar\u0131 olu\u015fturarak, belirli hatalar\u0131n nas\u0131l grupland\u0131r\u0131laca\u011f\u0131n\u0131 \u00f6zelle\u015ftirebilirsiniz.<\/p>\n<h3>Release (S\u00fcr\u00fcm) Takibi ve CI\/CD Entegrasyonu<\/h3>\n<p>Uygulaman\u0131z\u0131n her yeni s\u00fcr\u00fcm\u00fcn\u00fc Sentry&#8217;ye bildirmek, hatalar\u0131 belirli da\u011f\u0131t\u0131mlarla ili\u015fkilendirmenizi sa\u011flar. Bu, yeni bir s\u00fcr\u00fcm\u00fcn hatalara neden olup olmad\u0131\u011f\u0131n\u0131 h\u0131zl\u0131ca g\u00f6rmenizi veya belirli bir s\u00fcr\u00fcmdeki t\u00fcm hatalar\u0131 d\u00fczeltildi olarak i\u015faretlemenizi kolayla\u015ft\u0131r\u0131r.<\/p>\n<p>CI\/CD pipeline&#8217;\u0131n\u0131zda Sentry CLI kullanarak:<br \/>\n1.  Uygulaman\u0131z\u0131 build edin.<br \/>\n2.  <code>sentry-cli releases new <RELEASE_NAME><\/code> komutuyla yeni bir s\u00fcr\u00fcm olu\u015fturun.<br \/>\n3.  <code>sentry-cli releases files <RELEASE_NAME> upload-sourcemaps <PATH_TO_SOURCEMAPS><\/code> komutuyla kaynak haritalar\u0131n\u0131 y\u00fckleyin.<br \/>\n4.  <code>sentry-cli releases set-commits <RELEASE_NAME> --auto<\/code> komutuyla ilgili commit&#8217;leri ba\u011flay\u0131n.<br \/>\n5.  <code>sentry-cli releases finalize <RELEASE_NAME><\/code> komutuyla s\u00fcr\u00fcm\u00fc tamamlay\u0131n.<\/p>\n<p>Bu otomasyon, manuel hatalar\u0131 \u00f6nler ve hata takibinizi daha verimli hale getirir.<\/p>\n<h3>Performans \u0130zleme \u0130\u00e7in <code>tracesSampleRate<\/code> ve <code>sampleRate<\/code> Ayarlar\u0131<\/h3>\n<p>Performans izleme (APM) ve hata raporlama i\u00e7in \u00f6rnekleme oranlar\u0131n\u0131 dikkatlice ayarlay\u0131n.<br \/>\n*   <code>tracesSampleRate<\/code>: Performans i\u015flemleri (transactions) i\u00e7in \u00f6rnekleme oran\u0131d\u0131r. Genellikle %1 (0.01) ile %10 (0.1) aras\u0131nda bir de\u011fer iyi bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. T\u00fcm i\u015flemleri izlemek (<code>1.0<\/code>) \u00fcretim ortam\u0131nda \u00e7ok fazla veri g\u00f6ndermenize neden olabilir.<br \/>\n*   <code>sampleRate<\/code>: Hata olaylar\u0131 i\u00e7in \u00f6rnekleme oran\u0131d\u0131r. \u00c7ok y\u00fcksek hacimli hata olaylar\u0131 al\u0131yorsan\u0131z, bu oran\u0131 d\u00fc\u015f\u00fcrerek Sentry&#8217;ye g\u00f6nderilen hata say\u0131s\u0131n\u0131 azaltabilirsiniz. Ancak genellikle %100 (1.0) tutulur, \u00e7\u00fcnk\u00fc her hatan\u0131n \u00f6nemli olma potansiyeli vard\u0131r.<\/p>\n<h3>Hata Raporlama Kalitesini Art\u0131rma<\/h3>\n<p>*   <strong>Kullan\u0131c\u0131 Geri Bildirimleri<\/strong>: Sentry&#8217;nin kullan\u0131c\u0131 geri bildirimleri widget&#8217;\u0131n\u0131 uygulaman\u0131za entegre ederek, kullan\u0131c\u0131lar\u0131n bir hata ile kar\u015f\u0131la\u015ft\u0131klar\u0131nda do\u011frudan geri bildirim g\u00f6ndermelerini sa\u011flay\u0131n.<br \/>\n*   <strong>Manuel Hata Yakalama<\/strong>: Bazen yakalanmayan hatalar\u0131n yan\u0131 s\u0131ra, belirli bir i\u015f mant\u0131\u011f\u0131 i\u00e7inde bilerek yakalad\u0131\u011f\u0131n\u0131z ancak yine de Sentry&#8217;ye bildirmek istedi\u011finiz hatalar olabilir (<code>try-catch<\/code> bloklar\u0131 i\u00e7inde). Bu durumlarda <code>Sentry.captureException(error)<\/code> kullan\u0131n.<br \/>\n*   <strong>Mesaj Yakalama<\/strong>: Bilgilendirici mesajlar\u0131 (\u00f6rne\u011fin, bir API&#8217;nin beklenen bir hata kodu d\u00f6nd\u00fcrmesi) <code>Sentry.captureMessage('API returned 404 for product X')<\/code> ile Sentry&#8217;ye g\u00f6nderebilirsiniz. Bu, hata olmasa bile \u00f6nemli bir durumu izlemenizi sa\u011flar.<\/p>\n<h3>Sentry Entegrasyonunu Test Etme<\/h3>\n<p>Entegrasyonunuzun do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in d\u00fczenli olarak testler yap\u0131n. Kas\u0131tl\u0131 olarak bir hata olu\u015fturun (\u00f6rne\u011fin, <code>throw new Error('Test hatas\u0131');<\/code>) ve Sentry panelinde g\u00f6r\u00fcnd\u00fc\u011f\u00fcnden emin olun. Performans izlemesi i\u00e7in de uygulaman\u0131zda gezinerek Sentry Transactions b\u00f6l\u00fcm\u00fcnde verilerin g\u00f6r\u00fcnd\u00fc\u011f\u00fcn\u00fc kontrol edin.<\/p>\n<p>Bu en iyi uygulamalar\u0131 takip ederek, Angular uygulaman\u0131zdaki Sentry entegrasyonundan en y\u00fcksek verimi alabilir, hatalar\u0131 daha etkili bir \u015fekilde y\u00f6netebilir ve daha kararl\u0131 bir uygulama sunabilirsiniz.<\/p>\n<h2>Potansiyel Zorluklar ve \u00c7\u00f6z\u00fcmleri<\/h2>\n<p>Sentry, Angular uygulamalar\u0131n\u0131zda hata takibini b\u00fcy\u00fck \u00f6l\u00e7\u00fcde kolayla\u015ft\u0131rsa da, entegrasyon ve kullan\u0131m s\u0131ras\u0131nda baz\u0131 potansiyel zorluklarla kar\u015f\u0131la\u015f\u0131labilir. Bu zorluklar\u0131 \u00f6nceden bilmek ve olas\u0131 \u00e7\u00f6z\u00fcmlerini anlamak, sorunsuz bir deneyim sa\u011flamak i\u00e7in \u00f6nemlidir.<\/p>\n<h3>1. A\u015f\u0131r\u0131 Raporlama (Over-reporting) ve Kota T\u00fcketimi<\/h3>\n<p><strong>Zorluk<\/strong>: \u00d6zellikle geli\u015ftirme ortam\u0131nda veya \u00e7ok s\u0131k meydana gelen \u00f6nemsiz hatalar nedeniyle Sentry kotalar\u0131n\u0131z\u0131n h\u0131zla t\u00fckenmesi.<br \/>\n<strong>\u00c7\u00f6z\u00fcm<\/strong>:<br \/>\n*   <strong>Ko\u015fullu Ba\u015flatma<\/strong>: Sentry&#8217;yi yaln\u0131zca \u00fcretim veya sahneleme gibi kritik ortamlarda etkinle\u015ftirin (<code>environment.sentry.enabled<\/code>). Geli\u015ftirme ortam\u0131nda devre d\u0131\u015f\u0131 b\u0131rak\u0131n.<br \/>\n*   <strong><code>beforeSend<\/code> Callback<\/strong>: \u00d6nemsiz veya bilinen hatalar\u0131 filtrelemek i\u00e7in <code>beforeSend<\/code> callback&#8217;ini kullan\u0131n. \u00d6rne\u011fin, belirli bir HTTP durum kodu hatas\u0131n\u0131 veya taray\u0131c\u0131 eklentilerinden kaynaklanan hatalar\u0131 g\u00f6ndermeyin.<br \/>\n*   <strong><code>sampleRate<\/code> ve <code>tracesSampleRate<\/code><\/strong>: Hata ve performans olaylar\u0131 i\u00e7in \u00f6rnekleme oranlar\u0131n\u0131 dikkatlice ayarlay\u0131n. Y\u00fcksek trafikli uygulamalarda <code>sampleRate<\/code> (hata olaylar\u0131 i\u00e7in) de\u011ferini <code>1.0<\/code>&#8216;dan daha d\u00fc\u015f\u00fck bir de\u011fere (\u00f6rn. <code>0.1<\/code> veya <code>0.05<\/code>) \u00e7ekmeyi d\u00fc\u015f\u00fcnebilirsiniz, ancak bu, t\u00fcm hatalar\u0131 g\u00f6rmeyece\u011finiz anlam\u0131na gelir.<\/p>\n<h3>2. Performans Y\u00fck\u00fc<\/h3>\n<p><strong>Zorluk<\/strong>: Sentry SDK&#8217;s\u0131n\u0131n kendisinin veya \u00f6zellikle performans izlemenin (tracing) uygulamaya bir performans y\u00fck\u00fc getirmesi.<br \/>\n<strong>\u00c7\u00f6z\u00fcm<\/strong>:<br \/>\n*   <strong>Asenkron Y\u00fckleme<\/strong>: Sentry SDK&#8217;s\u0131n\u0131 uygulaman\u0131z\u0131n kritik olmayan bir an\u0131nda asenkron olarak y\u00fcklemeyi d\u00fc\u015f\u00fcnebilirsiniz. Ancak Angular entegrasyonunda genellikle <code>main.ts<\/code>&#8216;de erken ba\u015flatma tercih edilir.<br \/>\n*   <strong>Optimize Edilmi\u015f Entegrasyonlar<\/strong>: Yaln\u0131zca ihtiyac\u0131n\u0131z olan Sentry entegrasyonlar\u0131n\u0131 kullan\u0131n. \u00d6rne\u011fin, performans izlemeye ihtiyac\u0131n\u0131z yoksa <code>@sentry\/tracing<\/code> paketini ve <code>BrowserTracing<\/code> entegrasyonunu dahil etmeyin.<br \/>\n*   <strong><code>tracesSampleRate<\/code> Ayar\u0131<\/strong>: Performans izleme i\u00e7in <code>tracesSampleRate<\/code> de\u011ferini d\u00fc\u015f\u00fck tutarak (\u00f6rn. <code>0.01<\/code> veya <code>0.001<\/code>), Sentry&#8217;ye g\u00f6nderilen performans verisi miktar\u0131n\u0131 azalt\u0131n.<\/p>\n<h3>3. Hassas Veri S\u0131z\u0131nt\u0131s\u0131<\/h3>\n<p><strong>Zorluk<\/strong>: Kullan\u0131c\u0131lar\u0131n ki\u015fisel verileri, parolalar veya di\u011fer hassas bilgiler Sentry&#8217;ye yanl\u0131\u015fl\u0131kla g\u00f6nderilmesi.<br \/>\n<strong>\u00c7\u00f6z\u00fcm<\/strong>:<br \/>\n*   <strong><code>beforeSend<\/code> Callback<\/strong>: Bu, hassas verileri filtrelemek i\u00e7in en g\u00fc\u00e7l\u00fc ara\u00e7t\u0131r. G\u00f6nderilmeden \u00f6nce t\u00fcm olaylar\u0131 inceleyin ve potansiyel PII&#8217;yi maskeleyin veya kald\u0131r\u0131n.<br \/>\n*   <strong><code>data<\/code> ve <code>url<\/code> Filtreleri<\/strong>: Sentry&#8217;nin kendi kontrol panelinde, belirli URL&#8217;lerden veya veri alanlar\u0131ndan gelen bilgileri filtrelemek i\u00e7in sunucu taraf\u0131 kurallar tan\u0131mlayabilirsiniz.<br \/>\n*   <strong>Global Veri Temizleme<\/strong>: Sentry&#8217;nin <code>normalizeDepth<\/code> ayar\u0131n\u0131 kullanarak derin i\u00e7 i\u00e7e ge\u00e7mi\u015f nesnelerin normalle\u015ftirilmesini s\u0131n\u0131rlayabilir veya <code>maxValueLength<\/code> ile dize uzunluklar\u0131n\u0131 k\u0131saltabilirsiniz.<\/p>\n<h3>4. Kaynak Haritalar\u0131n\u0131n D\u00fczg\u00fcn \u00c7al\u0131\u015fmamas\u0131<\/h3>\n<p><strong>Zorluk<\/strong>: Minify edilmi\u015f \u00fcretim kodundaki hatalar\u0131n, Sentry&#8217;de okunabilir orijinal kod olarak g\u00f6r\u00fcnmemesi.<br \/>\n<strong>\u00c7\u00f6z\u00fcm<\/strong>:<br \/>\n*   <strong>Do\u011fru Kaynak Haritas\u0131 Y\u00fckleme<\/strong>: <code>sentry-cli<\/code> kullanarak kaynak haritalar\u0131n\u0131 do\u011fru <code>release<\/code> ve <code>url-prefix<\/code> ile Sentry&#8217;ye y\u00fckledi\u011finizden emin olun. <code>url-prefix<\/code> de\u011feri, taray\u0131c\u0131n\u0131n kaynak haritas\u0131n\u0131 nerede arad\u0131\u011f\u0131yla e\u015fle\u015fmelidir (genellikle Angular i\u00e7in <code>~\/<\/code> veya <code>~\/assets<\/code>).<br \/>\n*   <strong>S\u00fcr\u00fcm E\u015fle\u015fmesi<\/strong>: Sentry&#8217;ye y\u00fckledi\u011finiz kaynak haritalar\u0131n\u0131n s\u00fcr\u00fcm\u00fc ile uygulaman\u0131z\u0131n <code>Sentry.init<\/code> i\u00e7inde belirtti\u011fi <code>release<\/code> de\u011feri tam olarak e\u015fle\u015fmelidir.<br \/>\n*   <strong>CI\/CD Otomasyonu<\/strong>: Kaynak haritas\u0131 y\u00fckleme s\u00fcrecini CI\/CD pipeline&#8217;\u0131n\u0131za entegre ederek manuel hatalar\u0131 \u00f6nleyin.<\/p>\n<h3>5. Hata Gruplama Beklentileri Kar\u015f\u0131lam\u0131yor<\/h3>\n<p><strong>Zorluk<\/strong>: Sentry&#8217;nin baz\u0131 hatalar\u0131 yanl\u0131\u015f gruplamas\u0131 (farkl\u0131 hatalar\u0131 birle\u015ftirmesi veya ayn\u0131 hatalar\u0131 ay\u0131rmas\u0131).<br \/>\n<strong>\u00c7\u00f6z\u00fcm<\/strong>:<br \/>\n*   <strong><code>fingerprint<\/code> Kullan\u0131m\u0131<\/strong>: Hatalar\u0131n nas\u0131l grupland\u0131r\u0131laca\u011f\u0131n\u0131 manuel olarak kontrol etmek i\u00e7in <code>Sentry.captureException<\/code> veya <code>Sentry.captureMessage<\/code> \u00e7a\u011fr\u0131lar\u0131nda <code>fingerprint<\/code> se\u00e7ene\u011fini kullan\u0131n.<br \/>\n*   <strong>Sentry UI Gruplama Kurallar\u0131<\/strong>: Sentry kontrol panelinde, belirli kriterlere (hata mesaj\u0131, y\u0131\u011f\u0131n izi vb.) g\u00f6re \u00f6zel gruplama kurallar\u0131 tan\u0131mlayabilirsiniz.<\/p>\n<h3>6. A\u011f \u0130stekleri veya API Hatalar\u0131<\/h3>\n<p><strong>Zorluk<\/strong>: Sentry&#8217;nin otomatik olarak yakalayamad\u0131\u011f\u0131 veya yeterli ba\u011flam sa\u011flayamad\u0131\u011f\u0131 belirli a\u011f istekleri veya API hatalar\u0131.<br \/>\n<strong>\u00c7\u00f6z\u00fcm<\/strong>:<br \/>\n*   <strong>HTTP Interceptor Kullan\u0131m\u0131<\/strong>: Angular&#8217;da bir HTTP Interceptor olu\u015fturarak, t\u00fcm HTTP isteklerini ve yan\u0131tlar\u0131n\u0131 merkezi olarak izleyebilir, ba\u015far\u0131s\u0131z olanlar\u0131 <code>Sentry.captureException<\/code> ile manuel olarak Sentry&#8217;ye g\u00f6nderebilirsiniz. Bu, \u00f6zellikle API&#8217;den d\u00f6nen belirli hata kodlar\u0131n\u0131 (\u00f6rn. 4xx veya 5xx) yakalamak i\u00e7in faydal\u0131d\u0131r.<br \/>\n*   <strong><code>Sentry.addBreadcrumb<\/code><\/strong>: \u00d6nemli API \u00e7a\u011fr\u0131lar\u0131ndan \u00f6nce ve sonra ekmek k\u0131r\u0131nt\u0131lar\u0131 ekleyerek, a\u011f iste\u011fiyle ilgili daha fazla ba\u011flam sa\u011flay\u0131n.<\/p>\n<p>Bu zorluklar\u0131 ve \u00e7\u00f6z\u00fcmlerini g\u00f6z \u00f6n\u00fcnde bulundurarak, Angular uygulaman\u0131zda Sentry entegrasyonunu daha sa\u011flam ve verimli hale getirebilirsiniz.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Angular gibi modern web framework&#8217;leriyle geli\u015ftirilen uygulamalar\u0131n karma\u015f\u0131kl\u0131\u011f\u0131 artt\u0131k\u00e7a, hata takibi ve performans g\u00f6zlemleme s\u00fcre\u00e7leri de kritik bir \u00f6neme sahip olmu\u015ftur. Geleneksel hata ay\u0131klama y\u00f6ntemleri, \u00fcretim ortam\u0131ndaki ger\u00e7ek d\u00fcnya senaryolar\u0131nda yetersiz kal\u0131rken, Sentry gibi g\u00fc\u00e7l\u00fc platformlar geli\u015ftiricilere paha bi\u00e7ilmez i\u00e7g\u00f6r\u00fcler sunar.<\/p>\n<p>Bu makalede, Angular projesinde Sentry&#8217;yi ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131m\u0131z\u0131, temel hata takibi i\u00e7in <code>ErrorHandler<\/code> entegrasyonunu ve geli\u015fmi\u015f \u00f6zelliklerini (kullan\u0131c\u0131 ba\u011flam\u0131, ekmek k\u0131r\u0131nt\u0131lar\u0131, \u00f6zel etiketler, s\u00fcr\u00fcm y\u00f6netimi, performans izleme ve kaynak haritalar\u0131) detayl\u0131 bir \u015fekilde inceledik. Ayr\u0131ca, Sentry&#8217;yi kullan\u0131rken kar\u015f\u0131la\u015fabilece\u011finiz potansiyel zorluklar\u0131 ve bu zorluklar\u0131n \u00fcstesinden gelmek i\u00e7in en iyi uygulamalar\u0131 (ko\u015fullu ba\u015flatma, hassas veri maskeleme, CI\/CD entegrasyonu) ele ald\u0131k.<\/p>\n<p>Sentry&#8217;nin Angular uygulamalar\u0131n\u0131za entegrasyonu, sadece hatalar\u0131 yakalamakla kalmaz, ayn\u0131 zamanda bu hatalar\u0131n k\u00f6k nedenlerini anlaman\u0131za, etkilenen kullan\u0131c\u0131lar\u0131 belirlemenize ve uygulaman\u0131z\u0131n performans darbo\u011fazlar\u0131n\u0131 tespit etmenize olanak tan\u0131r. Bu proaktif yakla\u015f\u0131m, kullan\u0131c\u0131lar\u0131n\u0131z\u0131n kar\u015f\u0131la\u015ft\u0131\u011f\u0131 sorunlar\u0131 onlar fark etmeden veya bir \u015fikayette bulunmadan \u00f6nce \u00e7\u00f6zmenizi sa\u011flar. Sonu\u00e7 olarak, daha kararl\u0131, g\u00fcvenilir ve y\u00fcksek performansl\u0131 bir uygulama sunarak kullan\u0131c\u0131 memnuniyetini art\u0131r\u0131rs\u0131n\u0131z.<\/p>\n<p>Unutmay\u0131n ki Sentry entegrasyonu tek seferlik bir i\u015flem de\u011fildir. Uygulaman\u0131z geli\u015ftik\u00e7e ve yeni \u00f6zellikler eklendik\u00e7e Sentry yap\u0131land\u0131rmalar\u0131n\u0131z\u0131 g\u00f6zden ge\u00e7irmek, <code>release<\/code> bilgilerini g\u00fcncel tutmak ve kaynak haritalar\u0131n\u0131 d\u00fczenli olarak y\u00fcklemek, s\u00fcrekli bir hata izleme ve performans optimizasyonu d\u00f6ng\u00fcs\u00fcn\u00fcn par\u00e7as\u0131 olmal\u0131d\u0131r. Sentry&#8217;yi tam potansiyeliyle kullanarak, Angular uygulamalar\u0131n\u0131z\u0131n kalitesini ve s\u00fcrd\u00fcr\u00fclebilirli\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilirsiniz.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Angular: Sentry Kullanarak Hata Takibi\nGiri\u015f\nModern web uygulamalar\u0131, kullan\u0131c\u0131 deneyimini merkeze alarak s\u00fcrekli geli\u015fmektedir. Angular gibi g","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":[1488],"tags":[],"class_list":{"0":"post-34654","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-angular","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>Angular: Sentry Kullanarak Hata Takibi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\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\/angular-sentry-kullanarak-hata-takibi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Angular: Sentry Kullanarak Hata Takibi\" \/>\n<meta property=\"og:description\" content=\"Angular: Sentry Kullanarak Hata Takibi Giri\u015f Modern web uygulamalar\u0131, kullan\u0131c\u0131 deneyimini merkeze alarak s\u00fcrekli geli\u015fmektedir. Angular gibi g\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-20T05:41:04+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=\"28 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Angular: Sentry Kullanarak Hata Takibi\",\"datePublished\":\"2025-11-20T05:41:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/\"},\"wordCount\":4467,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Angular\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/\",\"name\":\"Angular: Sentry Kullanarak Hata Takibi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-20T05:41:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Angular: Sentry Kullanarak Hata Takibi\"}]},{\"@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":"Angular: Sentry Kullanarak Hata Takibi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","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\/angular-sentry-kullanarak-hata-takibi\/","og_locale":"tr_TR","og_type":"article","og_title":"Angular: Sentry Kullanarak Hata Takibi","og_description":"Angular: Sentry Kullanarak Hata Takibi Giri\u015f Modern web uygulamalar\u0131, kullan\u0131c\u0131 deneyimini merkeze alarak s\u00fcrekli geli\u015fmektedir. Angular gibi g","og_url":"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-20T05:41:04+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"28 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Angular: Sentry Kullanarak Hata Takibi","datePublished":"2025-11-20T05:41:04+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/"},"wordCount":4467,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Angular"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/","url":"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/","name":"Angular: Sentry Kullanarak Hata Takibi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-20T05:41:04+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/angular-sentry-kullanarak-hata-takibi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Angular: Sentry Kullanarak Hata Takibi"}]},{"@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\/34654","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=34654"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34654\/revisions"}],"predecessor-version":[{"id":34655,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34654\/revisions\/34655"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34654"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34654"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34654"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}