Günlük kaydı, kodda hata ayıklama ve kodu izleme için önemli bir araçtır.
Cloud Functions, web için geliştirme yaparken kendi Logger SDK'sını, özel Google Cloud Logging'ı veya console
nesne standardını kullanma seçeneği sunar.
Günlük yazma
Çoğu durumda Cloud Functions logger SDK'sı önerilse de şu nedenlerle diğer seçeneklerden birini tercih edebilirsiniz:
- Mevcut bir kod tabanınız var ve
console.log
'dan yeniden düzenleme yapmayı tercih etmiyorsunuz. - Cloud Logging (eski adıyla Stackdriver Logging) hakkında bilgi sahibisiniz ve özel günlük kaydı için bu hizmeti kullanmayı tercih ediyorsunuz.
Cloud Functions logger SDK'sını kullanma
Cloud Functions logger SDK, console.log
ifadelerine benzer bir API'ye sahip standart bir arayüz sağlar ve diğer günlük düzeylerini destekler.
Bu SDK'yı, etkinlikleri yapılandırılmış verilerle günlüğe kaydetmek için kullanabilirsiniz. Bu sayede analiz ve izleme daha kolay hale gelir.
Logger SDK, joker karakter içe aktarma işleminin bir parçası olarak günlük girişlerini destekler. Örneğin:
const functions = require("firebase-functions/v1");
functions.logger.log("Hello from info. Here's an object:", someObj);
Alternatif olarak, tek tek dışa aktarma işlemlerini kullanabilirsiniz. Bu örnekte, günlük dosyasına son bağımsız değişken olarak eklenen yapılandırılmış veriler gösterilmektedir:
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()
komutları INFO günlük düzeyine sahiptir.logger.info()
komutları INFO günlük düzeyine sahiptir.logger.warn()
komutları WARNING (Uyarı) günlük düzeyine sahiptir.logger.error()
komutları ERROR günlük kaydı düzeyine sahiptir.- Dahili sistem mesajları DEBUG günlük düzeyine sahiptir.
logger.write()
ile CRITICAL
, ALERT
ve EMERGENCY
ek günlük önem derecelerinde günlük girişleri yazabilirsiniz. LogSeverity'yi inceleyin.
Özel Cloud Logging günlükleri
Logger SDK'sı ile Cloud Functions günlükleri Cloud Logging tarafından desteklenir. Yapılandırılmış verilerle etkinlikleri günlüğe kaydetmek için Node.js için Cloud Logging kitaplığını kullanabilirsiniz. Bu sayede analiz ve izleme daha kolay hale gelir.
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);
console.log
uygulamasını kullanma
Bir işlevden günlük kaydı için önerilen çözüm, platformunuz için Logger SDK'sını kullanmaktır. Node.js ile bunun yerine console.log
ve console.error
gibi standart JavaScript günlük kaydı oluşturma çağrılarını kullanabilirsiniz ancak standart yöntemlerin doğru şekilde çalışması için önce özel bir modülün gerekli olduğunu belirtmeniz gerekir:
require("firebase-functions/logger/compat");
Gerekli günlükçü uyumluluk modülünü aldıktan sonra kodunuzda console.log()
yöntemlerini normal şekilde kullanabilirsiniz:
exports.helloError = functions.https.onRequest((request, response) => {
console.log('I am a log entry!');
response.send('Hello World...');
});
console.log()
komutları INFO günlük düzeyine sahiptir.console.info()
komutları INFO günlük düzeyine sahiptir.console.warn()
komutları ERROR günlük kaydı düzeyine sahiptir.console.error()
komutları ERROR günlük kaydı düzeyine sahiptir.- Dahili sistem mesajları DEBUG günlük düzeyine sahiptir.
Günlükleri görüntüleme
Cloud Functions günlükleri Google Cloud konsolunda, Cloud Logging kullanıcı arayüzünde veya firebase
komut satırı aracıyla görüntülenebilir.
Firebase CLI'yı kullanma
Günlükleri firebase
aracıyla görüntülemek için functions:log
komutunu kullanın:
firebase functions:log
Belirli bir işlevin günlüklerini görüntülemek için işlev adını bağımsız değişken olarak girin:
firebase functions:log --only <FUNCTION_NAME>
Günlük görüntüleme seçeneklerinin tamamı için functions:log
ile ilgili yardımı inceleyin:
firebase help functions:log
Google Cloud konsolunu kullanma
İşlevlerin günlüklerini Google Cloud konsolunda görüntüleyebilirsiniz.
Cloud Logging kullanıcı arayüzünü kullanma
Cloud Logging kullanıcı arayüzünde Cloud Functions günlüklerini görüntüleyebilirsiniz.
Günlükleri analiz etme
Cloud Logging, Cloud Functions izlemek için kullanabileceğiniz güçlü bir günlük analizi araçları paketi sunar.
Grafikler ve uyarılar
İşlevlerinizi izlemek için günlük tabanlı metrikler oluşturduktan sonra bu metriklere göre grafikler ve uyarılar oluşturabilirsiniz. Örneğin, zaman içindeki gecikmeyi görselleştirmek için bir grafik oluşturabilir veya belirli bir hata çok sık oluşursa sizi bilgilendirecek bir uyarı oluşturabilirsiniz.
Günlük tabanlı metrikleri grafiklerde ve uyarı politikalarında kullanma hakkında ayrıntılı bilgi için Grafik ve Uyarı Oluşturma başlıklı makaleye bakın.