Zapisywanie i wyświetlanie logów


Logowanie to ważne narzędzie do debugowania i monitorowania kodu. Cloud Functions umożliwia korzystanie z pakietu SDK do rejestrowania, niestandardowego pakietu Google Cloud Logging lub standardu obiektów console do tworzenia aplikacji internetowych.

Tworzenie dzienników

Chociaż pakiet SDK Cloud Functions logger jest zalecany w większości sytuacji, możesz wybrać jedną z tych opcji z tych powodów:

  • Masz już bazę kodu i nie chcesz jej przekształcać na podstawie console.log.
  • Znasz usługę Cloud Logging (dawniej StackDriver Logging) i wolisz korzystać z niej do logowania niestandardowego.

Korzystanie z pakietu SDK rejestratora Cloud Functions

Pakiet SDK rejestratora Cloud Functions udostępnia standardowy interfejs API podobny do instrukcji console.log i obsługujący inne poziomy logowania. Za pomocą tego pakietu SDK możesz rejestrować zdarzenia za pomocą uporządkowanych danych, ułatwiając analizę i monitorowanie.

Pakiet SDK rejestratora obsługuje wpisy dziennika w ramach importu za pomocą symboli wieloznacznych. Przykład:

  const functions = require("firebase-functions/v1");

  functions.logger.log("Hello from info. Here's an object:", someObj);

Możesz też użyć eksportu indywidualnego. W tym przykładzie pokazano uporządkowane dane dołączone do logu jako ostatni argument:

const { warn } = require("firebase-functions/logger");


// Attach structured data to the log as the last argument.
warn("This is a 'WARNING' severity message with some metadata.", {
  key1: 'val1',
  key2: 'val2'
});
  • Polecenia logger.log() mają poziom rejestrowania INFO.
  • Polecenia logger.info() mają poziom rejestrowania INFO.
  • Polecenia logger.warn() mają poziom logowania WARNING.
  • Polecenia logger.error() mają poziom logowania ERROR.
  • Wewnętrzne komunikaty systemowe mają poziom logu DEBUG.

Za pomocą funkcji logger.write() możesz zapisywać wpisy w logu z poziomem ważności CRITICAL, ALERTEMERGENCY. Zobacz Poważność logów.

Niestandardowe logi Cloud Logging

Dzienniki Cloud Functions z pakietu SDK do rejestrowania są obsługiwane przez Cloud Logging. Aby rejestrować zdarzenia za pomocą uporządkowanych danych, co ułatwia analizowanie i monitorowanie, możesz użyć biblioteki Cloud Logging dla Node.js.

const { Logging } = require('@google-cloud/logging');

// ...

// Instantiate the logging SDK. The project ID will
// be automatically inferred from the Cloud Functions environment.
const logging = new Logging();
const log = logging.log('my-custom-log-name');

// This metadata is attached to each log entry. This specifies a fake
// Cloud Function called 'Custom Metrics' in order to make your custom
// log entries appear in the Cloud Functions logs viewer.
const METADATA = {
  resource: {
    type: 'cloud_function',
    labels: {
      function_name: 'CustomMetrics',
      region: 'us-central1'
    }
  }
};

// ...

// Data to write to the log. This can be a JSON object with any properties
// of the event you want to record.
const data = {
  event: 'my-event',
  value: 'foo-bar-baz',

  // Optional 'message' property will show up in the Firebase
  // console and other human-readable logging surfaces
  message: 'my-event: foo-bar-baz'
};

// Write to the log. The log.write() call returns a Promise if you want to
// make sure that the log was written successfully.
const entry = log.entry(METADATA, data);
log.write(entry);

Jak korzystać z aplikacji console.log

Zalecane rozwiązanie do rejestrowania funkcji to użycie pakietu SDK rejestratora dla danej platformy. W Node.js możesz zamiast tego używać standardowych wywołań logowania JavaScriptu, np. console.log i console.error, ale najpierw potrzebujesz specjalnego modułu, by zainstalować poprawki standardowych metod, aby działały prawidłowo:

require("firebase-functions/logger/compat");

Gdy wymagany jest moduł zgodności z rejestratorem, możesz w kodze używać metod console.log() w zwykły sposób:

exports.helloError = functions.https.onRequest((request, response) => {
  console.log('I am a log entry!');
  response.send('Hello World...');
});
  • Polecenia console.log() mają poziom rejestrowania INFO.
  • Polecenia console.info() mają poziom rejestrowania INFO.
  • Polecenia console.warn() mają poziom logowania ERROR.
  • Polecenia console.error() mają poziom logowania ERROR.
  • Wewnętrzne wiadomości systemowe mają poziom logowania DEBUG.

Wyświetlanie logów

Logi dotyczące Cloud Functions można wyświetlać w konsoli Google Cloud, interfejsie użytkownika Cloud Logging lub za pomocą narzędzia wiersza poleceń firebase.

Korzystanie z wiersza poleceń Firebase

Aby wyświetlić dzienniki za pomocą narzędzia firebase, użyj polecenia functions:log:

firebase functions:log

Aby wyświetlić dzienniki dotyczące konkretnej funkcji, podaj jej nazwę jako argument:

firebase functions:log --only <FUNCTION_NAME>

Pełny zakres opcji wyświetlania dzienników znajdziesz w pomocy dotyczącej functions:log:

firebase help functions:log

Korzystanie z konsoli Google Cloud

Logi funkcji możesz wyświetlać w konsoli Google Cloud.

Korzystanie z interfejsu Cloud Logging

Logi usługi Cloud Functions możesz wyświetlać w interfejsie Cloud Logging.

Analizowanie logów

Cloud Logging oferuje zaawansowany zestaw narzędzi do analizy dzienników, których możesz używać do monitorowania Cloud Functions.

Wykresy i alerty

Po utworzeniu wskaźników opartych na logach, które służą do monitorowania funkcji, możesz tworzyć wykresy i alerty na ich podstawie. Możesz na przykład utworzyć wykres, aby zobrazować opóźnienie w czasie, lub alert, który poinformuje Cię, jeśli określony błąd wystąpi zbyt często.

Szczegółowe informacje o korzystaniu ze wskaźników opartych na logach w wykresach i zasadach tworzenia alertów znajdziesz w artykule Tworzenie wykresów i alertów.