HTTP Google Workspace eklentilerini test etme ve hata ayıklama

Google Workspace eklentisi geliştiricisi olarak, değişiklikleri test etmek veya karmaşık sorunları gidermek için kodda hata ayıklama yapmanız gerekebilir. Google Workspace eklentilerinde hata ayıklama işlemi, uygulamanızın mimarisine, işlevine, dağıtım şekline ve tercihlerinize bağlı olarak birçok farklı şekilde yapılabilir.

Bu sayfada, yerel geliştirme ortamlarını test etmek için kullanabileceğiniz birleşik bir giriş platformu olan ngrok'u kullanarak bir HTTP Google Workspace eklentisinde nasıl hata ayıklama yapılacağı açıklanmaktadır. Bu kılavuzda, kod değişikliklerini yerel bir ortamda test eder ve uzak bir ortamdaki sorunları giderirsiniz.

Yerel geliştirme ortamından hata ayıklama

Bu bölümde, yerel ortamınızda çalışan Google Workspace eklentinizle etkileşim kurarsınız.

Yerel geliştirme ortamından hata ayıklama

Şekil 1. Yerel bir geliştirme ortamında hata ayıklama.

Ön koşullar

Node.js

Python

Java

localhost hizmetini herkese açık hale getirme

Google Workspace eklentisinin yerel ortamınıza erişebilmesi için yerel ortamınızı internete bağlamanız gerekir. ngrok uygulaması, herkese açık bir URL'ye yapılan HTTP isteklerini yerel ortamınıza yönlendirmek için kullanılır.

  1. Yerel ortamınızdaki bir tarayıcıda ngrok hesabınızda oturum açın.
  2. Uygulamayı yükleyin ve yerel ortamınızda authtoken'inizi ayarlayın.
  3. ngrok hesabınızda statik bir alan oluşturun. Bu kılavuzun talimatlarında bu alana NGROK_STATIC_DOMAIN olarak atıfta bulunulur.

Eklenti dağıtımını oluşturup yükleme

  1. Google Workspace eklentisini, tüm HTTP isteklerini statik alanınıza gönderecek şekilde yapılandırın. Dağıtım dosyanız aşağıdaki gibi görünmelidir:

    {
      "oauthScopes": [
        "https://www.googleapis.com/auth/workspace.linkpreview",
        "https://www.googleapis.com/auth/workspace.linkcreate"
      ],
      "addOns": {
        "common": {
          "name": "Manage support cases",
          "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png",
          "layoutProperties": {
            "primaryColor": "#dd4b39"
          }
        },
        "docs": {
          "linkPreviewTriggers": [
            {
              "runFunction": "NGROK_STATIC_DOMAIN",
              "patterns": [
                {
                  "hostPattern": "example.com",
                  "pathPrefix": "support/cases"
                },
                {
                  "hostPattern": "*.example.com",
                  "pathPrefix": "cases"
                },
                {
                  "hostPattern": "cases.example.com"
                }
              ],
              "labelText": "Support case",
              "localizedLabelText": {
                "es": "Caso de soporte"
              },
              "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png"
            }
          ],
          "createActionTriggers": [
            {
              "id": "createCase",
              "labelText": "Create support case",
              "localizedLabelText": {
                "es": "Crear caso de soporte"
              },
              "runFunction": "$URL2",
              "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png"
            }
          ]
        }
      }
    }
    

    NGROK_STATIC_DOMAIN değerini ngrok hesabınızdaki statik alanla değiştirin.

  2. Google Cloud projesini şu şekilde ayarlayın:

    gcloud config set project PROJECT_ID
  3. Uygulama Varsayılan Kimlik Bilgileri için kullanılacak yeni kullanıcı kimlik bilgileri edinin:

    gcloud auth application-default login

    PROJECT_ID kısmını, uygulamanın Google Cloud projesinin proje kimliği ile değiştirin.

  4. Dağıtımı oluşturun:

    gcloud workspace-add-ons deployments create manageSupportCases \
        --deployment-file=DEPLOYMENT_FILE_PATH

    DEPLOYMENT_FILE_PATH yerine dağıtım dosyanızın yolunu yazın.

  5. Dağıtımı yükleyin:

    gcloud workspace-add-ons deployments install manageSupportCases

Google Workspace eklentisi, tüm HTTP isteklerini statik alana gönderir

Şekil 2. Google Workspace eklentisi, tüm HTTP isteklerini statik alana gönderir. ngrok herkese açık hizmeti, Google Workspace eklentisi ile yerel olarak yürütülen uygulama kodu arasında köprü görevi görür.

Google Workspace eklentisini test etme

Google Workspace eklentinizi yerel olarak dağıtabilir, test edebilir, hata ayıklayabilir ve otomatik olarak yeniden yükleyebilirsiniz.

Node.js

  1. Yerel ortamınızda yüklü Visual Studio Code IDE'den aşağıdakileri yapın:

    1. Yeni bir pencerede klasörü açınadd-ons-samples/node/3p-resources.
    2. package.json dosyasına bir bağımlılık ve iki komut dosyası ekleyerek uygulamayı yerel çalıştırma ve otomatik yeniden yükleme hata ayıklama için yapılandırın:

      {
          ...
          "dependencies": {
            ...
            "@google-cloud/functions-framework": "^3.3.0"
          },
          "scripts": {
              ...
              "start": "npx functions-framework --target=createLinkPreview --port=9000",
              "debug-watch": "nodemon --watch ./ --exec npm start"
          }
          ...
      }
      
    3. Uygulamayı kök dizinden yükleyin:

      npm install
    4. Kök dizinde .vscode/launch.json dosyasını oluşturarak debug-watch komut dosyasını tetikleyen Debug Watch adlı bir başlatma oluşturup yapılandırın:

      {
          "version": "0.2.0",
          "configurations": [{
              "type": "node",
              "request": "launch",
              "name": "Debug Watch",
              "cwd": "${workspaceRoot}",
              "runtimeExecutable": "npm",
              "runtimeArgs": ["run-script", "debug-watch"]
          }]
      }
      
    5. index.js dosyasında HTTP istek işlemeyi duraklatacak bir kesme noktası ekleyin ve daha önce eklenen Debug Watch yapılandırmasıyla çalıştırmaya ve hata ayıklama işlemine başlayın. Uygulama artık çalışıyor ve 9000 bağlantı noktasındaki HTTP isteklerini dinliyor.

      Uygulama çalışıyor ve "9000" bağlantı noktasında HTTP isteklerini dinliyor

      Şekil 3. Uygulama çalışıyor ve 9000 bağlantı noktasında HTTP isteklerini dinliyor.

  2. ngrok uygulamasını yerel ortamınızda başlatın:

    ngrok http --domain=NGROK_STATIC_DOMAIN 9000

    NGROK_STATIC_DOMAIN değerini ngrok hesabınızdaki statik alanla değiştirin. Tüm istekler artık yerel ortamınıza ve uygulama tarafından kullanılan bağlantı noktasına yönlendirilir.

    "ngrok" sunucusunun çalıştığı ve yönlendirme yaptığı terminal

    Şekil 4. ngrok sunucusunun çalıştığı ve yönlendirdiği terminal.

  3. ngrokUygulaması, yerel ana makinenizde bir web arayüzü de başlatır. Bu arayüzü bir tarayıcıda açarak tüm etkinlikleri izleyebilirsiniz.

    "ngrok" uygulaması tarafından barındırılan ve HTTP isteği olmadığını gösteren web arayüzü

    Şekil 5. ngrok uygulaması tarafından barındırılan ve HTTP isteği göstermeyen web arayüzü.

  4. Bir destek kaydı URL'sini test kullanıcısı hesabıyla yeni bir Google Dokümanında önizleyerek Google Workspace eklentinizi test edin:

    • Yeni bir Google Dokümanı oluşturun.

      Yeni bir Google Dokümanı oluşturma

    • Aşağıdaki bağlantıyı yazıp enter tuşuna basın:

      https://example.com/support/case/?name=Name1&description=Description1&priority=P1
      
    • Bağlantıyı tıklayın.

  5. Yerel ortamınızdaki Visual Studio Code dosyasında, yürütmenin ayarlanan kesme noktasında duraklatıldığını görebilirsiniz.

    Yürütme, ayarlanan kesme noktasında duraklatılır.

    Şekil 6. Yürütme, ayarlanan kesme noktasında duraklatılır.

  6. Google Workspace eklentileri zaman aşımına uğramadan önce Visual Studio Code hata ayıklayıcısından yürütmeyi devam ettirdiğinizde Google Workspace eklentisi, Google Dokümanında bağlantı önizlemesini önbellekten gösterir.

  7. HTTP istek ve yanıt günlüklerini, yerel ortamınızda ngrok uygulaması tarafından barındırılan web arayüzünden kontrol edebilirsiniz.

    "ngrok" uygulaması tarafından barındırılan web arayüzünden gelen HTTP isteği

    Şekil 7. ngrok uygulaması tarafından barındırılan web arayüzünden gelen HTTP isteği.

  8. Uygulama davranışını değiştirmek için Caseindex.js içinde 51 satır içi Case: ile değiştirin. Dosyayı kaydettiğinizde nodemon, uygulamayı güncellenmiş kaynak kodla otomatik olarak yeniden yükler ve Visual Studio Code hata ayıklama modunda kalır.

    Uygulama, kod değişikliği yüklüyken çalışıyor ve "9000" bağlantı noktasında HTTP isteklerini dinliyor

    Şekil 8. Uygulama çalışıyor ve kod değişikliği yüklüyken 9000 bağlantı noktasında HTTP isteklerini dinliyor.

  9. Bu kez, bağlantıyı tıklayıp yeni bir Google Dokümanında birkaç saniye beklemek yerine yerel ortamınızda ngrok uygulaması tarafından barındırılan web arayüzünde günlüğe kaydedilen son HTTP isteğini seçip Replay'ı tıklayabilirsiniz. Google Workspace eklentiniz, aktif olarak hata ayıklandığı için önceki sefer olduğu gibi yanıt vermiyor.

  10. Visual Studio Code hata ayıklayıcısından yürütmeyi devam ettirdiğinizde, yerel ortamınızda ngrok uygulaması tarafından barındırılan web arayüzünde, uygulamanın önizleme kartının güncellenmiş sürümünü içeren bir yanıt oluşturduğunu görebilirsiniz.

Python

  1. Yerel ortamınızda yüklü Visual Studio Code IDE'den aşağıdakileri yapın:

    1. Yeni bir pencerede klasörü açınadd-ons-samples/python/3p-resources/create_link_preview.
    2. Python env için yeni bir sanal ortam oluşturun ve etkinleştirin:

      virtualenv env
      source env/bin/activate
    3. Sanal ortamda pip kullanarak tüm proje bağımlılıklarını yükleyin:

      pip install -r requirements.txt
    4. Kök dizininde .vscode/launch.json dosyasını oluşturun ve env sanal ortamında, 9000 bağlantı noktasındaki functions-framework modülünden uygulamayı hata ayıklama modunda tetikleyen Debug Watch adlı bir başlatma yapılandırın:

      {
          "version": "0.2.0",
          "configurations": [{
              "type": "python",
              "request": "launch",
              "name": "Debug Watch",
              "python": "${workspaceFolder}/env/bin/python3",
              "module": "functions_framework",
              "args": [
                  "--target", "create_link_preview",
                  "--port", "9000",
                  "--debug"
              ]
          }]
      }
      
    5. main.py dosyasında HTTP istek işlemeyi duraklatacak bir kesme noktası ekleyin ve daha önce eklenen Debug Watch yapılandırmasıyla çalıştırmaya ve hata ayıklama işlemine başlayın. Uygulama artık çalışıyor ve 9000 bağlantı noktasındaki HTTP isteklerini dinliyor.

      Uygulama çalışıyor ve "9000" bağlantı noktasında HTTP isteklerini dinliyor

      Şekil 3. Uygulama çalışıyor ve 9000 bağlantı noktasında HTTP isteklerini dinliyor.

  2. ngrok uygulamasını yerel ortamınızda başlatın:

    ngrok http --domain=NGROK_STATIC_DOMAIN 9000

    NGROK_STATIC_DOMAIN değerini ngrok hesabınızdaki statik alanla değiştirin. Tüm istekler artık yerel ortamınıza ve uygulama tarafından kullanılan bağlantı noktasına yönlendirilir.

    "ngrok" sunucusunun çalıştığı ve yönlendirme yaptığı terminal

    Şekil 4. ngrok sunucusunun çalıştığı ve yönlendirdiği terminal.

  3. ngrokUygulaması, yerel ana makinenizde bir web arayüzü de başlatır. Bu arayüzü bir tarayıcıda açarak tüm etkinlikleri izleyebilirsiniz.

    "ngrok" uygulaması tarafından barındırılan ve HTTP isteği olmadığını gösteren web arayüzü

    Şekil 5. ngrok uygulaması tarafından barındırılan ve HTTP isteği göstermeyen web arayüzü.

  4. Bir destek kaydı URL'sini test kullanıcısı hesabıyla yeni bir Google Dokümanında önizleyerek Google Workspace eklentinizi test edin:

    • Yeni bir Google Dokümanı oluşturun.

      Yeni bir Google Dokümanı oluşturma

    • Aşağıdaki bağlantıyı yazıp enter tuşuna basın:

      https://example.com/support/case/?name=Name1&description=Description1&priority=P1
      
    • Bağlantıyı tıklayın.

  5. Yerel ortamınızdaki Visual Studio Code dosyasında, yürütmenin ayarlanan kesme noktasında duraklatıldığını görebilirsiniz.

    Yürütme, ayarlanan kesme noktasında duraklatılır.

    Şekil 6. Yürütme, ayarlanan kesme noktasında duraklatılır.

  6. Google Workspace eklentileri zaman aşımına uğramadan önce Visual Studio Code hata ayıklayıcısından yürütmeyi devam ettirdiğinizde Google Workspace eklentisi, Google Dokümanında bağlantı önizlemesini önbellekten gösterir.

  7. HTTP istek ve yanıt günlüklerini, yerel ortamınızda ngrok uygulaması tarafından barındırılan web arayüzünden kontrol edebilirsiniz.

    "ngrok" uygulaması tarafından barındırılan web arayüzünden gelen HTTP isteği

    Şekil 7. ngrok uygulaması tarafından barındırılan web arayüzünden gelen HTTP isteği.

  8. Uygulama davranışını değiştirmek için main.py dosyasının satır içi 56 bölümünde Case yerine Case: yazın. Dosyayı kaydettiğinizde Visual Studio Code, uygulamayı güncellenmiş kaynak kodla otomatik olarak yeniden yükler ve hata ayıklama modunda kalır.

    Uygulama, kod değişikliği yüklüyken çalışıyor ve "9000" bağlantı noktasında HTTP isteklerini dinliyor

    Şekil 8. Uygulama çalışıyor ve kod değişikliği yüklüyken 9000 bağlantı noktasında HTTP isteklerini dinliyor.

  9. Bu kez, bağlantıyı tıklayıp yeni bir Google Dokümanında birkaç saniye beklemek yerine yerel ortamınızda ngrok uygulaması tarafından barındırılan web arayüzünde günlüğe kaydedilen son HTTP isteğini seçip Replay'ı tıklayabilirsiniz. Google Workspace eklentiniz, aktif olarak hata ayıklandığı için önceki sefer olduğu gibi yanıt vermiyor.

  10. Visual Studio Code hata ayıklayıcısından yürütmeyi devam ettirdiğinizde, yerel ortamınızda ngrok uygulaması tarafından barındırılan web arayüzünde, uygulamanın önizleme kartının güncellenmiş sürümünü içeren bir yanıt oluşturduğunu görebilirsiniz.

Java

  1. Yerel ortamınızda yüklü Visual Studio Code IDE'den aşağıdakileri yapın:

    1. Yeni bir pencerede add-ons-samples/java/3p-resources klasörünü açın.
    2. pom.xml dosyasına Cloud Functions Framework derleme eklentisi function-maven-plugin'yi ekleyerek Maven projesini, CreateLinkPreview uygulamasını 9000 bağlantı noktasında yerel olarak çalıştıracak şekilde yapılandırın:

      ...
      <plugin>
          <groupId>com.google.cloud.functions</groupId>
          <artifactId>function-maven-plugin</artifactId>
          <version>0.11.0</version>
          <configuration>
              <functionTarget>CreateLinkPreview</functionTarget>
              <port>9000</port>
          </configuration>
      </plugin>
      ...
      
    3. Artık yerel olarak hata ayıklama modunda başlatabilirsiniz:

      mvnDebug function:run
      Preparing to execute Maven in debug mode
      Listening for transport dt_socket at address: 8000
    4. Kök dizine .vscode/launch.json dosyasını oluşturun ve daha önce 8000 bağlantı noktasıyla başlatılan uygulamaya bağlanan Remote Debug Watch adlı bir başlatma yapılandırın:

      {
          "version": "0.2.0",
          "configurations": [{
              "type": "java",
              "request": "attach",
              "name": "Remote Debug Watch",
              "projectName": "http-function",
              "hostName": "localhost",
              "port": 8000
          }]
      }
      
    5. CreateLinkPreview.java dosyasında HTTP istek işlemeyi duraklatacak bir durma noktası ekleyin ve daha önce eklenen Remote Debug Watch yapılandırmasıyla bağlantı kurmaya ve hata ayıklama işlemine başlayın. Uygulama, çalışmaya ve 9000 bağlantı noktasındaki HTTP isteklerini dinlemeye başlar.

      Uygulama çalışıyor ve &quot;9000&quot; bağlantı noktasında HTTP isteklerini dinliyor

      Şekil 3. Uygulama çalışıyor ve 9000 bağlantı noktasında HTTP isteklerini dinliyor.

  2. ngrok uygulamasını yerel ortamınızda başlatın:

    ngrok http --domain=NGROK_STATIC_DOMAIN 9000

    NGROK_STATIC_DOMAIN değerini ngrok hesabınızdaki statik alanla değiştirin. Tüm istekler artık yerel ortamınıza ve uygulama tarafından kullanılan bağlantı noktasına yönlendirilir.

    &quot;ngrok&quot; sunucusunun çalıştığı ve yönlendirme yaptığı terminal

    Şekil 4. ngrok sunucusunun çalıştığı ve yönlendirdiği terminal.

  3. ngrokUygulaması, yerel ana makinenizde bir web arayüzü de başlatır. Bu arayüzü bir tarayıcıda açarak tüm etkinlikleri izleyebilirsiniz.

    &quot;ngrok&quot; uygulaması tarafından barındırılan ve HTTP isteği olmadığını gösteren web arayüzü

    Şekil 5. ngrok uygulaması tarafından barındırılan ve HTTP isteği göstermeyen web arayüzü.

  4. Bir destek kaydı URL'sini test kullanıcısı hesabıyla yeni bir Google Dokümanında önizleyerek Google Workspace eklentinizi test edin:

    • Yeni bir Google Dokümanı oluşturun.

      Yeni bir Google Dokümanı oluşturma

    • Aşağıdaki bağlantıyı yazıp enter tuşuna basın:

      https://example.com/support/case/?name=Name1&description=Description1&priority=P1
      
    • Bağlantıyı tıklayın.

  5. Yerel ortamınızdaki Visual Studio Code dosyasında, yürütmenin ayarlanan kesme noktasında duraklatıldığını görebilirsiniz.

    Yürütme, ayarlanan kesme noktasında duraklatılır.

    Şekil 6. Yürütme, ayarlanan kesme noktasında duraklatılır.

  6. Google Workspace eklentileri zaman aşımına uğramadan önce Visual Studio Code hata ayıklayıcısından yürütmeyi devam ettirdiğinizde Google Workspace eklentisi, Google Dokümanında bağlantı önizlemesini önbellekten gösterir.

  7. HTTP istek ve yanıt günlüklerini, yerel ortamınızda ngrok uygulaması tarafından barındırılan web arayüzünden kontrol edebilirsiniz.

    &quot;ngrok&quot; uygulaması tarafından barındırılan web arayüzünden gelen HTTP isteği

    Şekil 7. ngrok uygulaması tarafından barındırılan web arayüzünden gelen HTTP isteği.

  8. Uygulama davranışını değiştirmek için CreateLinkPreview.java dosyasının satır içi 78 bölümünde Case yerine Case: yazın, mvnDebug sürecini yeniden başlatın ve hata ayıklama işlemini yeniden bağlayıp yeniden başlatmak için Remote Debug Watch'i yeniden başlatın.

  9. Bu kez, bağlantıyı tıklayıp yeni bir Google Dokümanında birkaç saniye beklemek yerine yerel ortamınızda ngrok uygulaması tarafından barındırılan web arayüzünde günlüğe kaydedilen son HTTP isteğini seçip Replay'ı tıklayabilirsiniz. Google Workspace eklentiniz, aktif olarak hata ayıklandığı için önceki sefer olduğu gibi yanıt vermiyor.

  10. Visual Studio Code hata ayıklayıcısından yürütmeyi devam ettirdiğinizde, yerel ortamınızda ngrok uygulaması tarafından barındırılan web arayüzünde, uygulamanın önizleme kartının güncellenmiş sürümünü içeren bir yanıt oluşturduğunu görebilirsiniz.

Uzaktan ortamdan hata ayıklama

Bu bölümde, uzak bir ortamda çalışan Google Workspace eklentinizle etkileşim kurarsınız.

Uzak ortamdan hata ayıklama

Şekil 9. Uzaktan ortamdan hata ayıklama.

Ön koşullar

  • Google Workspace eklentiniz dağıtıldı ve yüklendi.
  • Belirli bir bağlantı noktasında hata ayıklayıcı etkinken uzak ortamınızda çalışan uygulamanız. Bu kılavuzun talimatlarında REMOTE_DEBUG_PORT olarak adlandırılır.
  • Yerel ortamınız uzak ortamınıza ssh olabilir.
  • Yerel ortamınızda ayarlanmış ve hata ayıklama yapabilen bir IDE. Bu kılavuzda, açıklama amacıyla Visual Studio CodeIDE ve varsayılan hata ayıklama özelliklerini kullanıyoruz.

Yerel ve uzak ortamlarınızı bağlama

Hata ayıklama istemci bağlantısı başlatmak istediğiniz yerel ortamınızda bir SSH tüneli oluşturun:

ssh -L LOCAL_DEBUG_PORT:localhost:REMOTE_DEBUG_PORT REMOTE_USERNAME@REMOTE_ADDRESS

Aşağıdakini değiştirin:

  • LOCAL_DEBUG_PORT: Yerel ortamınızdaki hata ayıklama bağlantı noktası.
  • REMOTE_USERNAME: Uzak ortamınızdaki kullanıcı adı.
  • REMOTE_ADDRESS: Uzak ortamınızın adresi.
  • REMOTE_DEBUG_PORT: Uzak ortamınızdaki hata ayıklama bağlantı noktası.

Yerel ortamınızdaki hata ayıklama bağlantı noktası artık uzak ortamınızdaki hata ayıklama bağlantı noktasına bağlanmıştır.

Hata ayıklamayı başlat

Yerel ortamınızda yüklü Visual Studio Code IDE'den aşağıdakileri yapın:

  1. Yeni bir pencerede uygulamanızın kaynak kodunu açın.
  2. Kök dizininde .vscode/launch.json dosyasını oluşturun ve yerel ortamınızdaki hata ayıklama bağlantı noktasına bağlanan Debug Remote adlı bir başlatma yapılandırın:

    Node.js

    {
        "version": "0.2.0",
        "configurations": [{
            "type": "node",
            "request": "attach",
            "name": "Debug Remote",
            "address": "127.0.0.1",
            "port": LOCAL_DEBUG_PORT
        }]
    }
    

    Python

    {
        "version": "0.2.0",
        "configurations": [{
            "type": "python",
            "request": "attach",
            "name": "Debug Remote",
            "connect": {
                "host": "127.0.0.1",
                "port": LOCAL_DEBUG_PORT
            }
        }]
    }
    

    Java

    {
        "version": "0.2.0",
        "configurations": [{
            "type": "java",
            "request": "attach",
            "name": "Debug Remote",
            "hostName": "127.0.0.1",
            "port": LOCAL_DEBUG_PORT
        }]
    }
    

    LOCAL_DEBUG_PORT değerini yerel ortamınızdaki hata ayıklama noktasıyla değiştirin.

  3. Uygulamanızın kaynak koduna, HTTP istek işlemeyi duraklatan bir kesme noktası ekleyin ve daha önce eklenen Debug Remote yapılandırmasıyla uygulamayı çalıştırıp hata ayıklama işlemine başlayın.

Yüklediğiniz Google Workspace eklentisiyle etkileşim kurun. Google Workspace eklentiniz, Visual Studio Code IDE'de etkin bir şekilde hata ayıklandığı için yanıt vermez.

Hata günlüklerini nasıl sorgulayacağınızı öğrenin.