Günlük Kaydı

Herhangi bir uygulama geliştirirken genellikle geliştirme sırasında hataların teşhisine, müşteri sorunlarını belirleyip teşhis etmeye ve diğer amaçlara yardımcı olmak için bilgileri günlüğe kaydetmek istersiniz.

Apps Komut Dosyası, günlük kaydı için üç farklı mekanizma sağlar:

  • Yerleşik Apps Komut Dosyası yürütme günlüğü. Bu günlük kaydı hafiftir ve gerçek zamanlı olarak akış yapar ancak yalnızca kısa bir süre boyunca varlığını sürdürür.

  • Developer Console'daki Cloud Logging arayüzü, oluşturulduktan sonra günler boyunca kullanılabilen günlükler sağlar.

  • Developer Console'daki, komut dosyanız çalışırken oluşan hataları toplayıp kaydeden Error Reporting arayüzü.

Bunlar aşağıdaki bölümlerde açıklanmıştır. Bu mekanizmalara ek olarak kendi günlük kaydedici kodunuzu da oluşturabilirsiniz. Örneğin, bir günlük kaydı E-tablosuna veya JDBC veritabanına bilgi yazar.

Apps Komut Dosyası yürütme günlüğünü kullanma

Apps Komut Dosyası'na giriş yapmayla ilgili temel yaklaşımlardan biri, yerleşik yürütme günlüğünü kullanmaktır. Bu günlükleri görüntülemek için düzenleyicinin üst kısmındaki Yürütme günlüğü'nü tıklayın. Bir işlev çalıştırdığınızda veya hata ayıklayıcıyı kullandığınızda günlük akışı gerçek zamanlı olarak sunulur.

Yerleşik yürütme günlüğünde Logger veya console günlük kaydı hizmetlerini kullanabilirsiniz.

Bu günlükler, geliştirme ve hata ayıklama sırasında basit kontroller yapmak amacıyla tasarlanmıştır ve çok uzun sürmez.

Örneğin, şu işlevi ele alalım:

utils/logging.gs
/**
 * Logs Google Sheet information.
 * @param {number} rowNumber The spreadsheet row number.
 * @param {string} email The email to send with the row data.
 */
function emailDataRow(rowNumber, email) {
  console.log('Emailing data row ' + rowNumber + ' to ' + email);
  try {
    const sheet = SpreadsheetApp.getActiveSheet();
    const data = sheet.getDataRange().getValues();
    const rowData = data[rowNumber - 1].join(' ');
    console.log('Row ' + rowNumber + ' data: ' + rowData);
    MailApp.sendEmail(email, 'Data in row ' + rowNumber, rowData);
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed with error %s', err.message);
  }
}

Bu komut dosyası "2" ve "can@example.com" girdileriyle çalıştırıldığında aşağıdaki günlükler yazılır:

[16-09-12 13:50:42:193 PDT] Veri satırı 2'yi john@example.com adresine e-postayla gönderme
[16-09-12 13:50:42:271 PDT] 2.satır verileri: Maliyet 103,24

Cloud Logging

Apps Komut Dosyası, Google Cloud Platform (GCP) Cloud Logging hizmetine de kısmi erişim sağlar. Günlük kaydı birkaç gün boyunca devam eden veya çok kullanıcılı üretim ortamı için daha karmaşık bir günlük kaydı çözümüne ihtiyaç duyduğunuzda Cloud Logging tercih edilir. Veri saklama ve diğer kota ayrıntıları için Cloud Logging kotaları ve sınırları'nı inceleyin.

Daha fazla günlük kaydı kotasına ihtiyacınız varsa Google Cloud Platform kota isteği gönderebilirsiniz. Bunun için komut dosyanızın kullandığı Cloud Platform projesine erişiminizin olması gerekir.

Cloud Logging'i kullanma

Cloud günlükleri, Apps Komut Dosyası ile ilişkili Google Cloud projesine eklenir. Bu günlüklerin basitleştirilmiş bir sürümünü Apps Komut Dosyası kontrol panelinde görebilirsiniz.

Cloud Logging'den ve özelliklerinden tam olarak yararlanmak için komut dosyası projenizle birlikte standart bir Google Cloud projesi kullanın. Bu sayede Cloud günlüklerine doğrudan GCP Console'dan erişebilirsiniz. Ayrıca, daha fazla görüntüleme ve filtreleme seçeneği de sunulur.

Günlük kaydı yaparken kullanıcı hakkındaki e-posta adresleri gibi kişisel bilgileri kaydetmekten kaçınmak iyi bir gizlilik uygulamasıdır. Cloud günlükleri, gerektiğinde belirli bir kullanıcının günlük mesajlarını bulmak için kullanabileceğiniz etkin kullanıcı anahtarlarıyla otomatik olarak etiketlenir.

Apps Komut Dosyası console hizmeti tarafından sağlanan işlevleri kullanarak dizeleri, biçimlendirilmiş dizeleri ve hatta JSON nesnelerini günlüğe kaydedebilirsiniz.

Aşağıdaki örnekte, Cloud Operations'a bilgi kaydetmek için console hizmetinin nasıl kullanılacağı gösterilmektedir.

utils/logging.gs
/**
 * Logs the time taken to execute 'myFunction'.
 */
function measuringExecutionTime() {
  // A simple INFO log message, using sprintf() formatting.
  console.info('Timing the %s function (%d arguments)', 'myFunction', 1);

  // Log a JSON object at a DEBUG level. The log is labeled
  // with the message string in the log viewer, and the JSON content
  // is displayed in the expanded log structure under "jsonPayload".
  const parameters = {
    isValid: true,
    content: 'some string',
    timestamp: new Date()
  };
  console.log({message: 'Function Input', initialData: parameters});
  const label = 'myFunction() time'; // Labels the timing log entry.
  console.time(label); // Starts the timer.
  try {
    myFunction(parameters); // Function to time.
  } catch (e) {
    // Logs an ERROR message.
    console.error('myFunction() yielded an error: ' + e);
  }
  console.timeEnd(label); // Stops the timer, logs execution duration.
}

Etkin kullanıcı anahtarları

Geçici etkin kullanıcı anahtarları, kullanıcıların kimliklerini açıklamadan Cloud Log girişlerinde benzersiz kullanıcıları tespit etmenin kullanışlı bir yolunu sunar. Anahtarlar komut dosyası bazındadır ve kullanıcının kimliğini geliştiriciye göstermesi durumunda (örneğin bir sorun bildirirken) ek güvenlik sağlamak için yaklaşık olarak ayda bir kez değiştirilir.

Geçici etkin kullanıcı anahtarları, aşağıdaki nedenlerden dolayı e-posta adresleri gibi günlük kaydı tanımlayıcılarından daha üstündür:

  • Günlük kaydınıza herhangi bir şey eklemeniz gerekmez; bunlar zaten mevcuttur.
  • Kullanıcıların yetkilendirmesi gerekmez.
  • Kullanıcı gizliliğini korurlar.

Cloud Log girişlerinizde geçici etkin kullanıcı anahtarlarını bulmak için Google Cloud Console'da Cloud günlüklerinizi görüntüleyin. Bu işlemi yalnızca komut dosyası projeniz, erişebildiğiniz standart bir Google Cloud projesi kullanıyorsa yapabilirsiniz. Konsolda Google Cloud projesini açtıktan sonra, istediğiniz bir günlük girişini seçin ve meta veriler > etiketler > script.googleapis.com/user_key adresini görüntülemek için genişletin.

Geçici etkin kullanıcı anahtarını komut dosyanızda Session.getTemporaryActiveUserKey() çağrısı yaparak da alabilirsiniz. Bu yöntemi kullanmanın bir yolu, anahtarı kullanıcıya komut dosyanızı çalıştırırken göstermektir. Böylece kullanıcılar, ilgili günlükleri tespit etmenize yardımcı olmak için sorun bildirirken anahtarlarını dahil etmeyi tercih edebilir.

İstisna kaydı

İstisna günlük kaydı, komut dosyası proje kodunuzdaki işlenmemiş istisnaları bir yığın izlemeyle birlikte Cloud Logging'e gönderir.

İstisna günlüklerini görüntülemek için aşağıdaki adımları uygulayın:

  1. Apps Komut Dosyası projesini açın.
  2. Sol tarafta, Yürütme işlemleri'ni tıklayın.
  3. Üst tarafta, Filtre ekle > Durum'u tıklayın.
  4. Başarısız ve Zaman aşımına uğradı onay kutularını işaretleyin.

Komut dosyası projeniz, erişiminiz olan bir standart Google Cloud projesi kullanıyorsa günlüğe kaydedilen istisnaları GCP konsolunda görüntüleyebilirsiniz.

İstisna kaydını etkinleştir

İstisna günlüğü, yeni projeler için varsayılan olarak etkindir. Daha eski projelerde istisna kaydını etkinleştirmek için aşağıdaki adımları uygulayın:

  1. Komut dosyası projesini açın.
  2. Solda, Proje Ayarları'nı tıklayın.
  3. Yakalanamayan istisnaları Cloud Operations'a kaydet onay kutusunu işaretleyin.

Error Reporting

İstisna günlüğü, komut dosyanızda oluşturulan hataları toplayıp gösteren bir hizmet olan Cloud Error Reporting ile otomatik olarak entegre olur. Cloud hata raporlarınızı Google Cloud Console'da görüntüleyebilirsiniz. "Error Reporting'i Ayarla" istemini görürseniz bunun nedeni komut dosyanızın henüz herhangi bir istisna kaydetmemiş olmasıdır. İstisna günlük kaydını etkinleştirmenin dışında herhangi bir kurulum gerekmez.

Günlük kaydı gereksinimleri

Yerleşik yürütme günlüğünün kullanılması için herhangi bir gereklilik yoktur.

Apps Komut Dosyası kontrol panelinde Cloud günlüklerinin basitleştirilmiş bir sürümünü görebilirsiniz. Ancak Cloud Logging ve hata raporlarından en iyi şekilde yararlanmak için komut dosyasının GCP projesine erişiminiz olmalıdır. Bu yalnızca komut dosyası projeniz standart Google Cloud projesi kullanıyorsa mümkündür.