Günlük Kaydı

Herhangi bir uygulama geliştirirken genellikle geliştirme sırasında hataları teşhis etmek, müşteri sorunlarını tespit edip teşhis etmek ve başka amaçlarla 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, hafiftir ve gerçek zamanlı olarak yayınlanır, ancak yalnızca kısa bir süre için saklanır.

  • Geliştirici Konsolu'ndaki Cloud Logging arayüzü, oluşturulduktan sonra günlerce saklanan 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, örneğin bir günlük kaydı E-tablosu veya JDBC veritabanına bilgi yazan kendi günlük kaydedici kodunuzu da oluşturabilirsiniz.

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

Apps Komut Dosyası'nda günlük kaydı tutmayla ilgili temel yaklaşım, 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 gerçekleştirilir.

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 yapılan basit kontroller için tasarlanmıştır ve çok uzun süre saklanmaz.

Örneğin, şu fonksiyonu göz önünde bulundurun:

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" girişleriyle ç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 can@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 kısmi erişim de sağlar. Birkaç gün boyunca devam eden bir günlük kaydı oluşturmanız veya çok kullanıcılı bir üretim ortamı için daha karmaşık bir günlük kaydı çözümüne ihtiyacınız olduğunda Cloud Logging tercih edilir. Veri saklama ve diğer kota ayrıntıları için Cloud Logging kotaları ve sınırları bölümüne bakın.

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

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

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

Günlük kaydı yaparken e-posta adresleri gibi kullanıcı hakkındaki kişisel bilgilerin kaydedilmesini önlemek gizlilik açısından iyi bir uygulamadı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 İşlem Paketi'nde bilgileri günlüğe 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ı, Cloud Log girişlerindeki benzersiz kullanıcıların kimliklerini açığa çıkarmadan benzersiz kullanıcıları tespit etmenin kolay bir yolunu sunar. Anahtarlar, komut dosyası başınadır ve kullanıcının, örneğin bir sorun bildiriminde bulunurken kimliğini geliştiriciye ifşa etmesi durumunda ek güvenlik sağlamak için yaklaşık olarak ayda bir kez değiştirilir.

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

  • Günlük kaydınıza herhangi bir şey eklemenize gerek yoktur; tüm öğeler zaten eklenmiş durumdadır.
  • Kullanıcı yetkilendirmesi gerektirmez.
  • Kullanıcı gizliliğini korurlar.

Cloud Log girişlerinizde geçici olarak etkin kullanıcı anahtarlarını bulmak için Google Cloud Console'da Cloud günlüklerinizi görüntüleyin. Bunu yalnızca komut dosyası projeniz erişebildiğiniz bir standart 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 > tags >script.googleapis.com/user_key'i görüntülemek için genişletin.

Komut dosyanızda Session.getTemporaryActiveUserKey() çağrısı yaparak da geçici etkin kullanıcı anahtarını alabilirsiniz. Bu yöntemi kullanmanın bir yolu, anahtarı kullanıcıya komut dosyanızı çalıştırırken göstermektir. Daha sonra kullanıcılar, alakalı günlükleri belirlemenize yardımcı olmak için sorunları bildirirken anahtarlarını ekleyebilir.

İstisna kaydı

İstisna günlük kaydı, komut dosyası proje kodunuzdaki işlenmemiş istisnaları, 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. Solda, Yürütmeler'i 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ı seçin.

Komut dosyası projeniz erişebildiğiniz bir standart Google Cloud projesi kullanıyorsa kayıtlı istisnaları GCP Console'da da görüntüleyebilirsiniz.

İstisna kaydını etkinleştir

Yeni projeler için istisna günlük kaydı varsayılan olarak etkindir. Daha eski projelerde istisna kaydı özelliğini 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. Cloud İşlem Paketi'ndeki yakalanmamış istisnaları günlüğe kaydet onay kutusunu işaretleyin.

Error Reporting

İstisna günlük kaydı, komut dosyanızda üretilen hataları toplayıp gösteren bir hizmet olan Cloud Hata Bildirimi ile otomatik olarak entegre olur. Cloud hata raporlarınızı Google Cloud Console'da görüntüleyebilirsiniz. "Error Reporting'i Ayarla" komutunu vermeniz istenirse 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 kurulum gerekmez.

Günlük kaydı gereksinimleri

Yerleşik yürütme günlüğünü kullanmak için herhangi bir gereksinim yoktur.

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