Logowanie

Tworząc aplikację, często chcesz zapisać informacje, które pomogą nam diagnozowanie wad w fazie rozwoju, rozpoznanie i diagnozowanie problemów u klienta oraz w innych celach.

Apps Script udostępnia 3 różne mechanizmy logowania:

  • wbudowanego dziennika wykonywania Apps Script, Dziennik ten jest niewymagający dużych ilości danych i strumieniuje w czasie rzeczywistym, ale pozostaje tylko przez w krótkim czasie.

  • Interfejs Cloud Logging w Developer Console, która udostępnia dzienniki, które utrzymują się przez wiele dni po proces tworzenia.

  • Interfejs Error Reporting w Konsoli programisty, która gromadzi i rejestruje błędy występujące po gdy skrypt jest uruchomiony.

Zostały one opisane w dalszej części tego artykułu. Oprócz tych mechanizmów możesz również utworzyć własny kod rejestrujący, który np. zapisuje informacje do arkusza kalkulacyjnego logowania. lub bazie danych JDBC.

Używanie dziennika wykonywania Apps Script

Podstawowym sposobem logowania się w Apps Script jest użycie wbudowanego dziennika wykonywania. Aby wyświetlić te logi, u góry w edytorze kliknij Execution log (Dziennik wykonywania). Gdy uruchomisz funkcję lub użyjesz aby logi były strumieniowane w czasie rzeczywistym.

Możesz użyć Logger lub console usług logowania w dziennik wykonywania.

Są one przeznaczone do prostych kontroli podczas programowania i debugowania. i nie trwają zbyt długo.

Na przykład użyj tej funkcji:

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);
  }
}

Gdy ten skrypt jest uruchamiany z wartościami wejściowymi „2” i „jan@example.com” następujące logi:

[16-09-12 13:50:42:193 PDT] Wysyłanie wiersza 2 danych e-mailem na adres jan@example.com
[16-09-12 13:50:42:271 PDT] Dane w wierszu 2: Koszt 103.24

Cloud Logging

Apps Script zapewnia też częściowy dostęp do Google Cloud Platform (GCP) Cloud Logging. Gdy wymagają rejestrowania, które utrzymuje się przez kilka dni, lub wymaga bardziej złożonego logowania; dla środowiska produkcyjnego, w którym ma wielu użytkowników, preferowana jest usługa Cloud Logging wyboru. Zobacz Limity i ograniczenia Cloud Logging dotyczące przechowywania danych i innych informacji o limitach.

Jeśli potrzebujesz większego limitu logowania, prześlij prośbę o zwiększenie limitu w Google Cloud Platform. Wymaga to dostępu do Projekt Cloud Platform których wykorzystuje Twój skrypt.

Korzystanie z Cloud Logging

Logi Cloud są dołączone do projektu Google Cloud. powiązane z Apps Script. Możesz wyświetlić ich uproszczoną wersję w panelu Apps Script.

Aby w pełni wykorzystać możliwości usługi Cloud Logging i jej możliwości, użyj standardowy projekt Google Cloud z projektem skryptu. Dzięki temu masz dostęp do logów Cloud bezpośrednio w Konsola GCP i udostępnia więcej opcji wyświetlania i filtrowania.

Podczas rejestrowania należy unikać rejestrowania prywatnych danych, informacje o użytkowniku, takie jak adresy e-mail. Logi Cloud są automatycznie oznaczone jako aktywne klucze użytkowników w razie potrzeby możesz użyć do znalezienia komunikatów z dziennika konkretnego użytkownika.

Za pomocą parametru funkcje dostępne w języku Apps Script, console.

Poniższy przykład pokazuje, jak używać narzędzia console. loguje informacje w Cloud Operations.

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.
}

Aktywne klucze użytkowników

Tymczasowe, aktywne klucze użytkowników umożliwiają wygodne wykrywanie unikalnych użytkowników wpisy Cloud Log bez ujawniania tożsamości tych użytkowników; Klucze ustalane na podstawie skryptu, a zmieniają się mniej więcej raz w miesiącu, aby zapewnić dodatkowe czy użytkownik ujawni swoją tożsamość deweloperowi, na przykład podczas zgłaszania ze swoim zgłoszeniem.

Tymczasowe, aktywne klucze użytkownika są lepsze niż identyfikatory logowania, takie jak adresy e-mail , ponieważ:

  • Nie musisz niczego dodawać do zapisanych danych. już tam są!
  • Nie wymagają autoryzacji użytkownika.
  • Zapewniają ochronę prywatności użytkownika.

Aby znaleźć tymczasowe aktywne klucze użytkowników we wpisach Cloud Log, wyświetlić logi Cloud w konsoli Google Cloud. Możesz to zrobić tylko wtedy, gdy Twój projekt skryptu używa standardowy projekt Google Cloud do których masz dostęp. Gdy otworzysz projekt Google Cloud w konsoli, wybierz odpowiedni wpis w dzienniku i rozwiń go, aby go wyświetlić metadane > etykiety > script.googleapis.com/user_key.

Tymczasowy klucz aktywnego użytkownika możesz też uzyskać, dzwoniąc Session.getTemporaryActiveUserKey() w skrypcie. Jednym ze sposobów użycia tej metody jest wyświetlenie klucza użytkownikowi w czasie wykonywania skryptu. Następnie użytkownicy mogą uwzględnić swoje klucze podczas zgłaszania problemów, aby zidentyfikować odpowiednie dzienniki.

Logowanie wyjątków

Logowanie wyjątków wysyła nieobsłużone wyjątki w kodzie projektu skryptu w Cloud Logging, wraz ze zrzutem stosu.

Aby wyświetlić dzienniki wyjątków, wykonaj te czynności:

  1. Otwórz projekt Apps Script.
  2. Po lewej stronie kliknij Uruchomienia .
  3. U góry kliknij Dodaj filtr > Stan.
  4. Zaznacz pola wyboru Niepowodzenie i Przekroczono limit czasu.

Możesz też wyświetlić zarejestrowane wyjątki w konsoli GCP czy projekt skryptu korzysta standardowy projekt Google Cloud do których masz dostęp.

Włącz logowanie wyjątków

Logowanie wyjątków jest domyślnie włączone w nowych projektach. Aby włączyć wyjątek w starszych projektach wykonaj te czynności:

  1. Otwórz projekt skryptu.
  2. Po lewej stronie kliknij Ustawienia projektu.
  3. Zaznacz pole wyboru Włącz nieobsłużone wyjątki od Cloud Operations.

Error Reporting

Logowanie wyjątków automatycznie integruje się z Cloud Error Reporting, usługa zbierająca i wyświetlająca błędy wykryte w skrypcie. Dostępne opcje wyświetlić raporty o błędach usługi Cloud w konsoli Google Cloud. Jeśli pojawi się prośba o skonfigurowanie usługi Error Reporting to dlatego, że skrypt nie zarejestrował jeszcze żadnych wyjątków. Powyżej, gdy nie jest wymagana żadna konfiguracja włączenie rejestrowania wyjątków.

Wymagania dotyczące logowania

Nie ma wymagań, aby korzystać z wbudowanego dziennika wykonywania.

Uproszczoną wersję logów Cloud możesz wyświetlić w Panel Apps Script. Jednak, aby: jak najlepiej korzystać z Cloud Logging i raportowania błędów do projektu skryptu w GCP. Jest to możliwe tylko wtedy, gdy projekt skryptu korzysta ze standardowego projektu Google Cloud.