Function Compute'ün PHP çalışma zamanı, işlev kodunuzdan günlük kaydı oluşturmak için iki yöntem destekler: yerleşik logger modülü ve standart PHP çıktı fonksiyonları. Bu konu, her bir yaklaşımın nasıl kullanılacağını ve bir işlev çalıştırıldıktan sonra günlüklerin nasıl görüntüleneceğini açıklar.
Günlükleri Yazdırma
Yerleşik logger'ı kullanma
Yerleşik bir çalışma zamanı kullanan işlevler için logger'a $GLOBALS['fcLogger'] global değişkeni üzerinden erişin. Günlükler, hizmeti oluştururken belirttiğiniz Simple Log Service (SLS) Logstore'a otomatik olarak iletilir.
Her günlük girişi şu biçimdedir:
YYYY-MM-DD HH:MM:SS <requestId> [LEVEL] message
Örnek:
2024-01-04 10:50:44 1-659xxxxx-16cxxxxx-39659xxxxxx [INFO] hello world
Yerleşik logger, her girişe otomatik olarak bir zaman damgası, istek kimliği ve günlük düzeyi ekler. Standart PHP çıktı fonksiyonları (bir sonraki bölümde ele alınmıştır) bu üst verileri içermez.
Aşağıdaki örnek, varsayılan INFO düzeyinde iki günlük kaydı yazdırır; ardından düzeyi CRITICAL (500) seviyesine yükselterek sonraki INFO günlüklerinin bastırılmasını sağlar:
<?php
function handler($event, $context) {
$logger = $GLOBALS['fcLogger'];
$logger->info('hello world');
$logger->critical('world hello');
$logger->setLevel(500);
$logger->info('hello world 2'); // suppressed -- below CRITICAL threshold
$logger->critical('world hello 2');
return 'hello world';
}
Beklenen çıktı:
FunctionCompute php7.2 runtime inited.
FC Invoke Start RequestId: 1-659xxxxx-16cxxxxx-39659xxxxxx
2024-01-04 10:50:44 1-659xxxxx-16cxxxxx-39659xxxxxx [INFO] hello world
2024-01-04 10:50:44 1-659xxxxx-16cxxxxx-39659xxxxxx [CRITICAL] world hello
2024-01-04 10:50:44 1-659xxxxx-16cxxxxx-39659xxxxxx [CRITICAL] world hello 2
\nFC Invoke End RequestId: 1-659xxxxx-16cxxxxx-39659xxxxxx
hello world 2 görünmez çünkü setLevel(500) çağrısından sonra logger yalnızca CRITICAL (500) veya üzeri mesajları yayar.
Günlük düzeyleri
Hangi mesajların yayılacağını kontrol etmek için $logger->setLevel(<numeric_level>) yöntemini çağırın. Aktif düzeyin altındaki mesajlar atlanır. Varsayılan düzey INFO (200) değeridir.
| Günlük düzeyi | Sayısal değer | Arayüz | Kullanım durumu |
|---|---|---|---|
| EMERGENCY | 600 | $logger->emergency |
Sistem kullanılamaz durumda ve acil eylem gerektiriyor |
| ALERT | 550 | $logger->alert |
Kritik bir bileşen çöktü ve derhal müdahale edilmesi gerekiyor |
| CRITICAL | 500 | $logger->critical |
Acil dikkat gerektiren ciddi bir hata oluştu |
| ERROR | 400 | $logger->error |
Bir işlem başarısız oldu ve tamamlanamadı |
| WARNING | 300 | $logger->warning |
Beklenmeyen bir durum meydana geldi ancak yürütme devam etti |
| NOTICE | 250 | $logger->notice |
İzlenmeye değer normal ancak önemli bir olay |
| INFO | 200 | $logger->info |
Genel operasyonel mesajlar; varsayılan düzey |
| DEBUG | 100 | $logger->debug |
Geliştirme ve sorun giderme için ayrıntılı tanılama bilgileri |
Standart PHP çıktı fonksiyonlarını kullanma
Yerleşik bir çalışma zamanı kullanmayan işlevler için standart PHP çıktı fonksiyonlarını kullanın. Yerleşik logger'ın aksine, bu yaklaşım yalnızca ham içeriği yazdırır; zaman damgası, istek kimliği veya günlük düzeyi eklenmez.
<?php
function handler($event, $context) {
var_dump("abcd");
echo "abcd 2\n";
fwrite(STDERR, "error\n");
return 'hello world';
}
Beklenen çıktı:
FunctionCompute php7.2 runtime inited.
FC Invoke Start RequestId: 1-659xxxxx-165xxxxx-455a04xxxxxx
/code/index.php:4:
string(4) "abcd"
abcd 2
error
\nFC Invoke End RequestId: 1-659xxxxx-165xxxxx-455a04xxxxxx
Standart çıktıya veya standart hataya yazan herhangi bir fonksiyon aynı şekilde çalışır.
Günlükleri Görüntüleme
Bir işlev çalıştıktan sonra, Function Compute konsolunda işlevi açın ve Function Details sayfasındaki Logs sekmesine gidin. Çağrılar arasında günlükleri filtrelemek ve sorgulamak için bkz. Çağrı günlüklerini görüntüleme.