Günlük kaydı, kodda hata ayıklama ve izleme için önemli bir araçtır.
Cloud Functions, web için geliştirme yaparken kendi günlük kaydı 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 günlük kaydı SDK'sı önerilir ancak aşağıdaki nedenlerle diğer seçeneklerden birini tercih edebilirsiniz:
- Mevcut bir kod tabanınız varsa ve
console.log
'ten yeniden yapılandırmayı tercih etmiyorsanız - Cloud Logging'ü (eski adıyla StackDriver günlük kaydı) tanıyorsunuz ve özel günlük kaydı için kullanmayı tercih ediyorsunuz.
Cloud Functions günlük kaydı SDK'sını kullanma
Cloud Functions günlük kaydı SDK'sı, console.log
ifadelerine benzer bir API'ye sahip olan ve diğer günlük düzeylerini destekleyen standart bir arayüz sağlar.
Bu SDK'yı, etkinlikleri yapılandırılmış verilerle günlüğe kaydetmek için kullanabilirsiniz. Böylece daha kolay analiz ve izleme yapabilirsiniz.
Günlük kaydı SDK'sı, joker karakterli 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 de kullanabilirsiniz. Bu örnekte, günlüke 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ı UYARI günlük düzeyine sahiptir.logger.error()
komutları ERROR günlük düzeyine sahiptir.- Dahili sistem mesajları DEBUG günlük düzeyine sahiptir.
logger.write()
ile CRITICAL
, ALERT
ve EMERGENCY
günlük önem düzeylerine ek olarak günlük girişleri yazabilirsiniz. LogSeverity konusuna bakın.
Özel Cloud Logging günlükleri
Günlükleyici SDK'sı içeren Cloud Functions günlükleri Cloud Logging tarafından desteklenir. Etkinlikleri yapılandırılmış verilerle günlüğe kaydetmek için Node.js için Cloud Logging kitaplığını kullanabilirsiniz. Bu sayede daha kolay analiz ve izleme yapabilirsiniz.
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ı almak için önerilen çözüm, platformunuz için günlük kaydı SDK'sını kullanmaktır. Node.js'de bunun yerine console.log
ve console.error
gibi standart JavaScript günlük kaydı çağrılarını kullanabilirsiniz. Ancak standart yöntemlerin doğru şekilde çalışması için önce özel bir modülle düzeltme yapmanız gerekir:
require("firebase-functions/logger/compat");
Günlük kaydı uyumluluk modülünü zorunlu kıldıysanız 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 düzeyine sahiptir.console.error()
komutları ERROR günlük 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ında 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 sağlayın:
firebase functions:log --only <FUNCTION_NAME>
Günlük görüntüleme seçeneklerinin tamamı için functions:log
ile ilgili yardım sayfasını 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 ile ilgili günlükleri görüntüleyebilirsiniz.
Günlükleri analiz etme
Cloud Logging, Cloud Functions'inizi izlemek için kullanabileceğiniz güçlü bir günlük analizi araç 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, gecikmeyi zaman içinde görselleştirmek için bir grafik oluşturabilir veya belirli bir hatanın çok sık gerçekleşip gerçekleşmediğini bildiren 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.