CodeBlanks Logo Icon CodeBlanks

Logging middleware

PHP kursu · İleri seviye · Ders 71/92

İ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

  1. Log bileşenlerini eşleştir

    method
    GET, POST
    path
    /users, /api
    status
    200, 404
    body
    Yanıt içeriği
  2. 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.

  3. İsteği logla

    echo "[LOG] " . ____ . "
    ";
    Cevabı göster
    echo "[LOG] " . $request . "
    ";

İleri seviye bölümündeki tüm dersler