Logowanie to ważne narzędzie do debugowania i monitorowania kodu.
Cloud Functions daje możliwość korzystania z pakietu SDK rejestratora, niestandardowego obiektu GoogleCloud Logging lub standardowego obiektu console
do tworzenia aplikacji internetowych.
Pisanie dzienników
W większości sytuacji zalecany jest pakiet SDK Cloud Functions logger, ale w tych przypadkach możesz wybrać jedną z innych opcji:
- Masz już bazę kodu i nie chcesz jej refaktoryzować z
console.log
. - Znasz Cloud Logging (wcześniej Stackdriver Logging) i wolisz używać tej usługi do logowania niestandardowego.
Korzystanie z pakietu SDK rejestratora Cloud Functions
Pakiet SDK rejestratora Cloud Functions udostępnia standardowy interfejs z interfejsem API podobnym do instrukcji console.log
i obsługuje inne poziomy logowania.
Za pomocą tego pakietu SDK możesz rejestrować zdarzenia z danymi strukturalnymi, co ułatwia analizowanie i monitorowanie.
Pakiet SDK rejestratora obsługuje wpisy dziennika w ramach importu 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 pojedynczego. Ten przykład pokazuje dane strukturalne 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 logu WARNING. - Polecenia
logger.error()
mają poziom logu ERROR. - Wewnętrzne wiadomości systemowe mają poziom dziennika DEBUG.
Za pomocą logger.write()
możesz pisać wpisy logu z dodatkowymi poziomami ważności logu: CRITICAL
, ALERT
i EMERGENCY
. Zobacz LogSeverity.
Logi niestandardowe Cloud Logging
Dzienniki Cloud Functions z pakietu SDK rejestratora są obsługiwane przez Cloud Logging. Możesz używać Cloud Logging biblioteki Node.js do rejestrowania zdarzeń z danymi strukturalnymi, co ułatwia analizowanie 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);
Jak korzystać z aplikacji console.log
Zalecanym rozwiązaniem do rejestrowania danych z funkcji jest używanie pakietu SDK rejestratora na Twojej platformie. W Node.js możesz zamiast tego używać standardowych wywołań logowania w JavaScript, takich jak console.log
i console.error
, ale najpierw musisz zaimportować specjalny moduł, aby poprawić działanie standardowych metod:
require("firebase-functions/logger/compat");
Po zaimportowaniu modułu zgodności rejestratora możesz używać metod console.log()
w kodzie 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 logu ERROR. - Polecenia
console.error()
mają poziom logu ERROR. - Wewnętrzne wiadomości systemowe mają poziom dziennika DEBUG.
Wyświetlanie logów
Logi Cloud Functions można wyświetlać w Google Cloud konsoli,Cloud Logging interfejsie lub za pomocą narzędzia wiersza poleceń firebase
.
Korzystanie z wiersza poleceń Firebase
Aby wyświetlić logi za pomocą narzędzia firebase
, użyj polecenia functions:log
:
firebase functions:log
Aby wyświetlić logi dotyczące konkretnej funkcji, podaj jej nazwę jako argument:
firebase functions:log --only <FUNCTION_NAME>
Pełny zakres opcji wyświetlania logów znajdziesz w pomocy dotyczącej functions:log
:
firebase help functions:log
Korzystanie z konsoli Google Cloud
Logi funkcji możesz wyświetlać w Google Cloudkonsoli.
Korzystanie z interfejsu Cloud Logging
Logi Cloud Functions możesz wyświetlać w interfejsie Cloud Logging.
Analizowanie logów
Cloud Logging oferuje zaawansowany zestaw narzędzi do analizy logów, których możesz używać do monitorowania Cloud Functions.
Wykresy i alerty
Po utworzeniu wskaźników opartych na logach do monitorowania funkcji możesz tworzyć wykresy i alerty na podstawie tych wskaźników. Możesz na przykład utworzyć wykres, aby wizualizować opóźnienie w czasie, lub utworzyć alert, który będzie Cię informować, czy określony błąd występuje zbyt często.
Szczegółowe informacje o tym, jak używać wskaźników opartych na logach na wykresach i w zasadach alertów, znajdziesz w artykule Tworzenie wykresów i alertów.