PHP
Logging middleware
İstekleri kaydeden bir logging middleware yazmayı öğrenirsin.
Logging middleware
Logging middleware, her istek geldiğinde onu kayda alır. Yöntem, yol, süre, yanıt kodu gibi bilgileri bir dosyaya ya da standart çıktıya yazar. Hata ayıklama ve denetim (audit) için vazgeçilmezdir.
Tipik desen: echo "[LOG] {$request}\n"; ile isteği yazdır, ardından return $next($request); ile akışı sürdür. Böylece sonraki katmanlar çalışır, ama kayıt da alınmış olur.
Logging katmanını pipeline'ın en dışına koyarsan, hem before hem after kısımlarıyla isteğin tüm yaşam döngüsünü izleyebilirsin.
Log formatı
Log satırının biçimi tutarlı olmalı. Yaygın desen: [LOG] {method} {path}. Daha ayrıntılı istersen sprintf ile method, path ve status'u tek satıra yazabilirsin.
Süre ölçmek için microtime(true) before ve after kısımlarında çağrılır; fark milisaniye cinsinden loglanır. Bu, yavaş rotaları bulmayı kolaylaştırır.
İsteği tek satırda yazmak için echo "[LOG] {$request}\n"; yeterlidir. Çift tırnak içinde süslü parantezle değişkenler genişler.
Uygulama requestLogger yaz
Bir requestLogger($request, $next) fonksiyonu tanımla. İçinde echo "[LOG] " . $request . "\n" ile isteği yazdır, sonra return $next($request) ile akışı sürdür. $handler "ok" döner. İki farklı istekle çağırıp sonuçları yazdır: "GET /a" ve "POST /b".
Örnek çözümü göster
function requestLogger($request, $next) { echo "[LOG] " . $request . "\n"; return $next($request); } yaz. Sonra echo requestLogger("GET /a", $handler) . "\n"; ve echo requestLogger("POST /b", $handler) . "\n"; çağır.
Örnek çözüm:
<?php
function requestLogger($request, $next) {
echo "[LOG] " . $request . "\n";
return $next($request);
}
$handler = function ($request) {
return "ok";
};
echo requestLogger("GET /a", $handler) . "\n";
echo requestLogger("POST /b", $handler) . "\n";
Kendini test et
-
Log bileşenlerini eşleştir
- method
- GET, POST
- path
- /users, /api
- status
- 200, 404
- body
- Yanıt içeriği
-
Logging middleware ne zaman çalışır?
- Yalnızca hata durumunda
- Yalnızca giriş yapmış kullanıcıda
- Yalnızca hafta sonu
- Her istekte
Cevabı göster
Her istekte — Doğru. Logging middleware her istekte çalışır; denetim için tutarlı kayıt bırakır.
-
İsteği logla
echo "[LOG] " . ____ . "
";
Cevabı göster
echo "[LOG] " . $request . "
";
Sıradaki ders: PSR-15 temelleri