> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Log

> API Proxy mesaj hattının herhangi bir noktasında anlık mesaj durumunu yakalayarak seçilen konnektörlere gönderebilirsiniz. Elasticsearch, veritabanı, Graylog, Webhook, Kafka, RabbitMQ ve Syslog hedeflerine senkron veya asenkron loglama yapabilirsiniz.

<Tip>
  Bu doküman spesifik bir politikanın detaylı kullanımını anlatır. Eğer Apinizer politika yapısını ilk kez kullanıyorsanız veya politikaların genel çalışma prensiplerini öğrenmek istiyorsanız, öncelikle [Politika Nedir?](/tr/concepts/temel-kavramlar/politika-nedir) sayfasını okumanızı öneririz.
</Tip>

## Genel Bakış

### Amacı Nedir?

* Log Politikası, mesaj işleme hattının (pipeline) herhangi bir noktasına yerleştirilerek **o anki mesaj durumunun anlık görüntüsünü** (snapshot) yakalar ve belirlenen konnektörlere gönderir.
* Standart trafik loglamasından farklı olarak, pipeline'ın ara noktalarında (örneğin bir dönüştürme politikasından önce ve sonra) loglama yaparak mesaj değişikliklerini izlemeyi sağlar.
* HTTP, WebSocket ve gRPC protokollerinde çalışır.
* Birden fazla konnektöre aynı anda gönderim yapabilir.

### Çalışma Prensibi

1. **Politika Tetiklenmesi**: Mesaj işleme hattında log politikasının sırası geldiğinde çalışır.
2. **Anlık Görüntü Oluşturma**: O anki mesaj durumu protokole özel olarak yakalanır (başlık, parametre, gövde bilgileri).
3. **Konnektörlere Gönderim**: Anlık görüntü, tanımlanan her konnektöre ayrı ayrı gönderilir.
4. **Gizlilik Uygulama**: Gizlilik ayarları etkinse, hassas veriler gönderimden önce işlenir (maskeleme, silme, hashleme, şifreleme).

### Kullanım Alanları

* Belirli pipeline aşamalarında mesaj durumunu izleme (politika öncesi/sonrası karşılaştırma)
* Hata ayıklama ve sorun giderme için detaylı log toplama
* Denetim ve uyumluluk gereksinimlerini karşılama
* Harici sistemlere (SIEM, log analiz platformları) gerçek zamanlı veri gönderimi

### Desteklenen Hedefler

| Hedef                                                               | Protokol              |
| ------------------------------------------------------------------- | --------------------- |
| Elasticsearch                                                       | REST/HTTP             |
| Veritabanı (Oracle, MySQL/MariaDB, PostgreSQL, SQL Server, MongoDB) | JDBC / MongoDB Driver |
| Graylog                                                             | GELF                  |
| Webhook                                                             | HTTP POST             |
| Syslog                                                              | Syslog Protocol       |
| Kafka                                                               | Kafka Producer        |
| RabbitMQ                                                            | AMQP                  |

### Protokol Desteği

| Protokol      | Başlık (Header) | Parametre | Gövde (Body) |
| ------------- | :-------------: | :-------: | :----------: |
| **HTTP**      |        ✓        |     ✓     |       ✓      |
| **WebSocket** |        ✓        |     —     |       ✓      |
| **gRPC**      |        —        |     —     |       ✓      |

<Info>
  WebSocket ve gRPC protokollerinde başlık ve parametre bilgileri protokol yapısı gereği sınırlı olabilir.
</Info>

## Konfigürasyon Alanları

<img src="https://mintcdn.com/apinizer/bgom9mCEH0MbSei2/images/develop/politikalar/log-1.png?fit=max&auto=format&n=bgom9mCEH0MbSei2&q=85&s=73bd4abd1a58abe188486d3e22206cf8" alt="Log politikası Tanım sekmesi" width="1000" data-path="images/develop/politikalar/log-1.png" />

### Genel Ayarlar

| Alan         | Açıklama                                                                 |
| ------------ | ------------------------------------------------------------------------ |
| Ad           | Politikanın tanımlayıcı adı                                              |
| Açıklama     | Politikanın amacını belirten açıklama                                    |
| Aktif        | Politikanın aktif/pasif durumu                                           |
| Çalışma Modu | **Senkron** veya **Asenkron** çalışma modu (aşağıda detaylandırılmıştır) |
| Koşul        | Politikanın ne zaman çalışacağını belirleyen koşul (isteğe bağlı)        |

### Konnektör Seçimi

Politikanın log göndereceği konnektörleri seçebilirsiniz. Konnektörler, bağlantı tanımı üzerinden seçilir ve ortam bağımsız çalışır — aynı bağlantı tanımı farklı ortamlarda farklı konnektör örneklerine karşılık gelebilir.

<img src="https://mintcdn.com/apinizer/bgom9mCEH0MbSei2/images/develop/politikalar/log-2.png?fit=max&auto=format&n=bgom9mCEH0MbSei2&q=85&s=8c447462e1fc9180a8acadbc67591a0c" alt="Log politikası konnektör seçimi" width="1000" data-path="images/develop/politikalar/log-2.png" />

<Info>
  Global politika olarak işaretlenen tanımlar birden fazla ortamda kullanılabilir; her ortamda aynı bağlantı tanımına karşılık gelen konnektörün yapılandırılmış olması gerekir.
</Info>

### Loglanan Alanlar

Aşağıdaki alan gruplarından hangilerinin log kaydına dahil edileceğini belirleyebilirsiniz:

| Alan Grubu                            | Açıklama                                                        |
| ------------------------------------- | --------------------------------------------------------------- |
| İstemciden Gelen İstek Başlıkları     | İstemciden API Proxy'ye gelen istek başlık bilgileri            |
| İstemciden Gelen İstek Parametreleri  | İstemciden API Proxy'ye gelen istek parametreleri               |
| İstemciden Gelen İstek Gövdesi        | İstemciden API Proxy'ye gelen istek gövdesi                     |
| Hedefe Gönderilen İstek Başlıkları    | API Proxy'den Backend API'ye gönderilen istek başlık bilgileri  |
| Hedefe Gönderilen İstek Parametreleri | API Proxy'den Backend API'ye gönderilen istek parametreleri     |
| Hedefe Gönderilen İstek Gövdesi       | API Proxy'den Backend API'ye gönderilen istek gövdesi           |
| Hedeften Gelen Yanıt Başlıkları       | Backend API'den gelen yanıt başlık bilgileri                    |
| Hedeften Gelen Yanıt Gövdesi          | Backend API'den gelen yanıt gövdesi                             |
| İstemciye Gönderilen Yanıt Başlıkları | İstemciye gönderilen yanıt başlık bilgileri                     |
| İstemciye Gönderilen Yanıt Gövdesi    | İstemciye gönderilen yanıt gövdesi                              |
| Metadata                              | IP adresi, HTTP metodu, URI, port gibi istek metadata bilgileri |
| Metrikler                             | Süre, boyut, önbellek durumu gibi performans metrikleri         |

### Gövde Loglama Modu

| Mod             | Açıklama                                                                               |
| --------------- | -------------------------------------------------------------------------------------- |
| Tam (Full)      | Gövde verisi tamamen loglanır                                                          |
| Kısmi (Partial) | Gövde verisi belirtilen maksimum boyuta kadar loglanır. Boyut aşıldığında veri kesilir |

## Çalışma Modları

| Mod                      | Gönderim                           | Hata Durumu            | Pipeline Etkisi         |
| ------------------------ | ---------------------------------- | ---------------------- | ----------------------- |
| **Senkron** (varsayılan) | Sıralı, tamamlanana kadar beklenir | Hata fırlatılır        | Pipeline **kırılır**    |
| **Asenkron**             | Arka planda, beklenmez             | Hata loglanır, yutulur | Pipeline **devam eder** |

<Warning>
  Senkron modda konnektör hatası pipeline'ı kırar ve istemciye hata döner. Üretim ortamında kesintisiz çalışma gerekiyorsa **asenkron** modu tercih edin.
</Warning>

<Tip>
  Asenkron modda konnektör hatası oluştuğunda hata bilgisi uygulama loglarına yazılır, ancak istemci isteği etkilenmez.
</Tip>

## Veri Yapısı

Log politikası, standart API trafik loglarından farklı hafif bir veri yapısı kullanır. Aşağıdaki tabloda gönderilen alanlar ve Elasticsearch/veritabanı karşılıkları listelenmiştir.

| Alan Adı            | Kısa Ad (ES/JSON) | Tip    | Açıklama                                           |
| ------------------- | ----------------- | ------ | -------------------------------------------------- |
| Timestamp           | @timestamp        | Date   | Log kaydının oluşturulma zamanı                    |
| Korelasyon ID       | aci               | String | Apinizer istek izleme ID'si                        |
| Ortam ID            | ei                | String | Gateway ortam tanımlayıcısı                        |
| API Proxy ID        | api               | String | API Proxy tanımlayıcısı                            |
| API Proxy Adı       | apn               | String | API Proxy adı                                      |
| API Proxy Metot ID  | apmi              | String | API Proxy metot tanımlayıcısı                      |
| API Proxy Metot Adı | apmn              | String | API Proxy metot adı                                |
| Kullanıcı/Anahtar   | uok               | String | Doğrulanmış kullanıcı adı veya API anahtarı        |
| HTTP Durum Kodu     | sc                | Number | HTTP yanıt durum kodu                              |
| Sonuç Tipi          | rt                | String | İşlem sonucu (SUCCESS, ERROR vb.)                  |
| Hata Tipi           | et                | String | Hata tipi (varsa)                                  |
| İstek Başlıkları    | fcrh              | List   | Anahtar-değer çifti olarak istek başlıkları        |
| İstek Parametreleri | fcrp              | List   | Anahtar-değer çifti olarak sorgu parametreleri     |
| İstek Gövdesi       | fcrb              | String | İstek gövde içeriği                                |
| Pipeline Konumu     | cr                | String | Log politikasının yerleştirildiği pipeline bölgesi |
| Atama Seviyesi      | cl                | String | Log politikasının bağlandığı hiyerarşi seviyesi    |

### Örnek JSON Çıktı

```json theme={null}
{
  "@timestamp": "2026-03-31T12:30:45.123Z",
  "aci": "550e8400-e29b-41d4-a716-446655440000",
  "ei": "env-production-001",
  "api": "proxy-payment-api",
  "apn": "Payment API",
  "apmi": "method-create-payment",
  "apmn": "POST /payments",
  "uok": "merchant-api-key-123",
  "sc": 200,
  "rt": "SUCCESS",
  "fcrh": [
    { "k": "Content-Type", "v": "application/json" },
    { "k": "Authorization", "v": "Bearer eyJhbGciOi..." },
    { "k": "X-Request-ID", "v": "req-abc-123" }
  ],
  "fcrp": [
    { "k": "currency", "v": "TRY" },
    { "k": "lang", "v": "tr" }
  ],
  "fcrb": "{\"amount\": 150.00, \"merchantId\": \"M-001\"}",
  "cr": "FROM_CLIENT",
  "cl": "API_PROXY_METHOD"
}
```

<Info>
  Başlık ve parametre alanlarındaki her bir giriş **k** (key) ve **v** (value) çiftinden oluşur. Bu yapı Elasticsearch'te `nested` tip olarak indekslenir.
</Info>

### Pipeline Konumu (`cr`) Değerleri

| Değer          | Açıklama                                                    |
| -------------- | ----------------------------------------------------------- |
| `FROM_CLIENT`  | İstemciden gelen isteğin işlendiği ilk pipeline aşaması     |
| `TO_BACKEND`   | İsteğin backend'e iletilmeden önceki son pipeline aşaması   |
| `FROM_BACKEND` | Backend yanıtının işlendiği ilk pipeline aşaması            |
| `TO_CLIENT`    | Yanıtın istemciye gönderilmeden önceki son pipeline aşaması |

### Atama Seviyesi (`cl`) Değerleri

| Değer              | Açıklama                                                               |
| ------------------ | ---------------------------------------------------------------------- |
| `API_PROXY_GROUP`  | Politika bir proxy grubuna bağlıdır; gruptaki tüm proxy'lere uygulanır |
| `API_PROXY`        | Politika doğrudan bir API Proxy'ye bağlıdır                            |
| `API_PROXY_METHOD` | Politika belirli bir API Proxy metoduna bağlıdır                       |

## Elasticsearch Entegrasyonu

Elasticsearch'te log politikası verileri için ayrı bir index template oluşturulmalıdır. Bu template standart API trafik log template'inden farklıdır ve yalnızca log politikasının gönderdiği alanları içerir.

<Warning>
  Log politikası verileri için Elasticsearch index template'i ve ILM politikası Apinizer UI'dan otomatik oluşturulmaz. Aşağıdaki adımları Elasticsearch üzerinde manuel olarak uygulamanız gerekir.
</Warning>

### Adım 1: ILM Politikası Oluşturma

Index yaşam döngüsü yönetimi için bir ILM politikası oluşturun. Aşağıdaki örnek 30 GB veya 1 günde rollover yapan ve 30 gün sonra silen bir politika oluşturur. Değerleri ihtiyacınıza göre ayarlayın.

```bash theme={null}
PUT _ilm/policy/apinizer-log-policy-capture-ilm
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_size": "30gb",
            "max_age": "1d"
          }
        }
      },
      "delete": {
        "min_age": "30d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}
```

### Adım 2: Index Template Oluşturma

Aşağıdaki komutu Elasticsearch Kibana Dev Tools veya curl kullanarak çalıştırın. Template data stream desteği içerir.

<Warning>
  Template'teki alan tipleri, log politikasının gönderdiği JSON yapısıyla birebir eşleşmelidir. Alan tiplerini değiştirmeyin.
</Warning>

```bash theme={null}
PUT _index_template/apinizer-log-policy-capture-template
{
  "index_patterns": ["apinizer-log-policy-capture*"],
  "data_stream": {},
  "template": {
    "settings": {
      "index": {
        "lifecycle": {
          "name": "apinizer-log-policy-capture-ilm"
        },
        "number_of_shards": 1,
        "number_of_replicas": 0,
        "refresh_interval": "5s"
      }
    },
    "mappings": {
      "properties": {
        "@timestamp": {
          "type": "date",
          "format": "yyyy-MM-dd'T'HH:mm:ss.S'Z'||yyyy-MM-dd'T'HH:mm:ss.SS'Z'||yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
        },
        "aci": {
          "type": "keyword"
        },
        "ei": {
          "type": "keyword"
        },
        "api": {
          "type": "keyword"
        },
        "apn": {
          "type": "keyword"
        },
        "apmi": {
          "type": "keyword"
        },
        "apmn": {
          "type": "keyword"
        },
        "uok": {
          "type": "keyword",
          "ignore_above": 50
        },
        "sc": {
          "type": "short"
        },
        "rt": {
          "type": "keyword",
          "ignore_above": 7
        },
        "et": {
          "type": "keyword",
          "ignore_above": 75
        },
        "fcrh": {
          "type": "nested",
          "properties": {
            "k": {
              "type": "keyword"
            },
            "v": {
              "type": "keyword"
            }
          }
        },
        "fcrp": {
          "type": "nested",
          "properties": {
            "k": {
              "type": "keyword"
            },
            "v": {
              "type": "keyword"
            }
          }
        },
        "fcrb": {
          "type": "text"
        },
        "cr": {
          "type": "keyword"
        },
        "cl": {
          "type": "keyword"
        }
      }
    }
  }
}
```

### Adım 3: Data Stream Oluşturma

Template oluşturulduktan sonra, ilk veri geldiğinde data stream otomatik oluşur. Manuel oluşturmak için:

```bash theme={null}
PUT _data_stream/apinizer-log-policy-capture
```

### Konnektör Yapılandırması

Elasticsearch konnektörünün **Index Adı** alanına `apinizer-log-policy-capture` girin. Bu isim, template'teki `index_patterns` ile eşleşmelidir.

<Info>
  Farklı bir index adı kullanmak istiyorsanız template'teki `index_patterns` alanını buna göre güncelleyin. Örneğin proje bazlı ayrıştırma için `apinizer-log-policy-capture-proje-adi` kullanabilirsiniz.
</Info>

## Veritabanı Entegrasyonu

Veritabanı konnektörü, her log politikası yakalamasını hedef ilişkisel veritabanındaki `log_PolicyCapture` tablosuna tek bir satır olarak yazar. Desteklenen veritabanı tipleri Oracle, MySQL/MariaDB, PostgreSQL ve SQL Server'dır. MongoDB için koleksiyon ilk yazımda otomatik oluşturulur — manuel kurulum gerekmez.

<Warning>
  İlişkisel veritabanları için `log_PolicyCapture` tablosu **otomatik oluşturulmaz** — konnektörü etkinleştirmeden önce tabloyu manuel olarak oluşturmanız gerekir. Desteklenen her veritabanı tipi için CREATE TABLE komutu, önerilen indeksler ve bölümleme (partitioning) rehberi için bakınız: [Apinizer Log Tabloları Oluşturma Komutları](/tr/operations/yonetici-kilavuzlari/apinizer-log-tablolari-olusturma-komutlari#log-politikasi).
</Warning>

<Info>
  `correlation_id` kolonu aynı çağrının istek ve yanıt satırlarını birbirine bağlar. Log politikası birden fazla pipeline aşamasına yerleştirildiğinde (örneğin `FROM_CLIENT` ve `TO_CLIENT`), kayıtlar `correlation_id` üzerinden join edilerek bir işlem uçtan uca izlenebilir. Bu nedenle bu kolon üzerindeki indeks şiddetle önerilir.
</Info>

<Tip>
  Yüksek trafikli API'lerde, veritabanı yazma gecikmesinin istek pipeline'ını bloke etmemesi için log politikasını **Asenkron** modda yapılandırmanızı öneririz.
</Tip>

## Gizlilik Ayarları

<img src="https://mintcdn.com/apinizer/bgom9mCEH0MbSei2/images/develop/politikalar/log-3.png?fit=max&auto=format&n=bgom9mCEH0MbSei2&q=85&s=c5bcac382d62a8cc72923e90ee666fa1" alt="Log politikası gizlilik ayarları" width="1000" data-path="images/develop/politikalar/log-3.png" />

Politika seviyesinde gizlilik ayarları yapılandırarak hassas verilerin log kaydına yazılmadan önce işlenmesini sağlayabilirsiniz.

| İşlem               | Açıklama                                         |
| ------------------- | ------------------------------------------------ |
| Maskeleme (Mask)    | Hassas veriyi kısmen gizler (ör: `****1234`)     |
| Silme (Delete)      | Hassas veriyi tamamen kaldırır                   |
| Hashleme (Hash)     | Hassas veriyi tek yönlü hash değerine dönüştürür |
| Şifreleme (Encrypt) | Hassas veriyi şifreler                           |

<Info>
  Gizlilik ayarları iki seviyede uygulanır: önce politika seviyesindeki ayarlar, sonra konnektör seviyesindeki ayarlar. Her iki seviye de etkinse, her ikisi de sırasıyla uygulanır.
</Info>

Maskeleme, veri konnektörlere gönderilmeden **önce** uygulanır. Konnektör seviyesindeki gizlilik ayarları ayrı ve bağımsız olarak uygulanır. Bu özellik GDPR gibi veri koruma gereksinimlerini karşılamak için kullanılabilir.

## Kullanım Senaryoları

| Senaryo                                 | Açıklama                                                                                           | Önerilen Mod |
| --------------------------------------- | -------------------------------------------------------------------------------------------------- | ------------ |
| Dönüştürme öncesi/sonrası karşılaştırma | Bir dönüştürme politikasından önce ve sonra log politikası ekleyerek mesaj değişikliklerini izleme | Asenkron     |
| Hata ayıklama (Debug)                   | Belirli bir politikanın girdi ve çıktısını incelemek için pipeline'a geçici log noktası ekleme     | Senkron      |
| Denetim kaydı                           | Hassas API'lerde her isteğin tam kaydını tutma                                                     | Asenkron     |
| Çoklu hedef loglama                     | Aynı mesajı Elasticsearch ve Kafka'ya aynı anda gönderme                                           | Asenkron     |
| Koşullu loglama                         | Yalnızca belirli bir başlık değeri veya yol ile eşleşen istekleri loglama                          | Asenkron     |

## İlgili Sayfalar

* [Mesaj Akışı ve Politika Yönetimi](/tr/develop/politikalar/mesaj-akisi-ve-politika-yonetimi)
* [API Proxy Trafik Log Ayarları](/tr/develop/api-proxy-konfigurasyonu/api-trafik-log-ayarlari)
* [Konnektörler](/tr/integrations/konnektorler/genel-bakis)
* [Gateway Ortamlarına Konnektör Eklenmesi](/tr/admin/server-management/gateway-ortamlarina-konnektor-eklenmesi)

## Politikayı Silme

Bu politikanın silinmesi ve kullanımda olduğu durumda yapılacak işlemler için [Politika Nedir?](/tr/concepts/temel-kavramlar/politika-nedir) sayfasına bakınız.

## Politikayı Dışa/İçe Aktarma

Bu politikanın dışa aktarma adımları ve mevcut seçenekleri için [Politika Nedir?](/tr/concepts/temel-kavramlar/politika-nedir) sayfasına bakınız.

## Politikayı API'ye Ekleme

Bu politikayı API'lere ekleme süreci için [Politika Yönetimi](/tr/develop/api-proxy-konfigurasyonu/politika-yonetimi) sayfasındaki [Akışa Politika Ekleme](/tr/develop/api-proxy-konfigurasyonu/politika-yonetimi#akisa-politika-ekleme) bölümüne bakınız.

## Sonraki Adımlar

<CardGroup cols={2}>
  <Card title="Script Politikası" icon="code" href="/tr/develop/politikalar/script">
    Özel script ile veri dönüştürme
  </Card>

  <Card title="API Çağrısı Politikası" icon="arrow-right-arrow-left" href="/tr/develop/politikalar/api-cagrisi">
    Pipeline içinde harici API çağrısı
  </Card>
</CardGroup>
