Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Pisz i przeglądaj dzienniki

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Rejestrowanie jest ważnym narzędziem do debugowania i monitorowania kodu. Cloud Functions daje Ci możliwość korzystania z pakietu SDK rejestratora, niestandardowego Google Cloud Logging lub standardu obiektów console do tworzenia aplikacji internetowych.

Pisanie dzienników

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

  • Masz istniejącą bazę kodu i wolisz nie refaktoryzować z console.log .
  • Znasz Cloud Logging (wcześniej rejestrowanie StackDriver) i wolisz używać go do logowania niestandardowego.

Korzystanie z zestawu SDK rejestratora Cloud Functions

Pakiet SDK rejestratora Cloud Functions zapewnia standardowy interfejs, który ma interfejs API podobny do instrukcji console.log i obsługuje inne poziomy rejestrowania. Możesz używać tego pakietu SDK do rejestrowania zdarzeń za pomocą danych strukturalnych , co ułatwia analizę i monitorowanie.

Zestaw SDK rejestratora obsługuje wpisy dziennika jako część importu symboli wieloznacznych. Na przykład:

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

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

Alternatywnie możesz użyć indywidualnych eksportów. Ten przykład ilustruje dane strukturalne dołączone do dziennika 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'
});
  • logger.log() mają poziom dziennika INFO .
  • logger.info() mają poziom dziennika INFO .
  • logger.warn() mają poziom dziennika ERROR .
  • logger.error() mają poziom dziennika ERROR .
  • Wewnętrzne komunikaty systemowe mają poziom dziennika DEBUG .

Za pomocą logger.write() można zapisywać wpisy w dzienniku oraz poziomy istotności dziennika CRITICAL , ALERT i EMERGENCY . Zobacz LogSeverity .

Niestandardowe dzienniki Cloud Logging

Dzienniki Cloud Functions z pakietem SDK rejestratora są obsługiwane przez Cloud Logging . Możesz użyć biblioteki Cloud Logging dla Node.js do rejestrowania zdarzeń za pomocą danych strukturalnych, co ułatwia analizę i monitorowanie.

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

Korzystanie console.log

Zalecanym rozwiązaniem do rejestrowania z funkcji jest użycie zestawu SDK rejestratora . Zamiast tego możesz użyć standardowych wywołań rejestrowania JavaScript, takich jak console.log i console.error , ale najpierw musisz wymagać specjalnego modułu, aby załatać standardowe metody, aby działały poprawnie:

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

Gdy moduł kompatybilności rejestratora jest wymagany, możesz normalnie używać metod console.log() w swoim kodzie:

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

Przeglądanie dzienników

Dzienniki Cloud Functions można przeglądać w Google Cloud Console , interfejsie Cloud Logging lub za pomocą narzędzia wiersza poleceń firebase .

Korzystanie z interfejsu wiersza polecenia Firebase

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

firebase functions:log

Aby wyświetlić dzienniki dla określonej funkcji, podaj nazwę funkcji jako argument:

firebase functions:log --only <FUNCTION_NAME>

Pełen zakres opcji przeglądania dzienników znajduje się w pomocy do functions:log :

firebase help functions:log

Korzystanie z Google Cloud Console

Możesz przeglądać dzienniki funkcji w Google Cloud Console .

Korzystanie z interfejsu Cloud Logging

Możesz przeglądać dzienniki Cloud Functions w interfejsie Cloud Logging.

Analizowanie dzienników

Cloud Logging oferuje zaawansowany zestaw narzędzi do analizy logów, których można używać do monitorowania funkcji Cloud Functions. Te narzędzia są szczególnie wydajne w połączeniu z niestandardowym rejestrowaniem .

Metryki oparte na dziennikach

W interfejsie Cloud Logging użyj pola filtru zaawansowanego, aby zawęzić zakres dziennika do funkcji, którą chcesz przeanalizować, a następnie kliknij Prześlij filtr , aby przefiltrować dzienniki. Na przykład można analizować tylko dzienniki z jednej funkcji:

resource.type="cloud_function"
resource.labels.function_name="myCloudFunction"
resource.labels.region="us-central1"

Jeśli rejestrowałeś zdarzenia z niestandardowymi ładunkami JSON, możesz filtrować przy użyciu podanych kluczy i wartości:

resource.type="cloud_function"
resource.labels.function_name="CustomMetrics"
jsonPayload.event="my-event"

Po przefiltrowaniu dzienników można je analizować przy użyciu wskaźników opartych na dziennikach . Kliknij przycisk Utwórz metrykę , aby otworzyć edytor metryk i wybrać typ metryki:

  • Metryki licznika: policz liczbę wpisów dziennika pasujących do filtra. Na przykład możesz policzyć, ile razy wystąpiło określone zdarzenie.
  • Metryki dystrybucji: gromadzą dane liczbowe z wpisów dziennika pasujących do filtra. Na przykład możesz śledzić opóźnienia niektórych operacji w swoich funkcjach.

W przypadku dzienników tekstowych, na przykład wynikających z funkcji console.log() , można wyodrębnić wartości i etykiety z pola textPayload za pomocą wyrażeń regularnych. W przypadku dzienników niestandardowych z danymi strukturalnymi można uzyskać bezpośredni dostęp do danych w polu jsonPayload .

Wykresy i alerty

Po utworzeniu metryk opartych na dziennikach do monitorowania funkcji można tworzyć wykresy i alerty na podstawie tych metryk. Na przykład możesz utworzyć wykres, aby zwizualizować opóźnienie w czasie lub utworzyć alert informujący o zbyt częstym występowaniu określonego błędu.

Zobacz Tworzenie wykresów i alertów, aby uzyskać szczegółowe informacje na temat używania metryk opartych na dziennikach na wykresach i zasadach alertów.