Yemek Tarifleri
İçerik Güvenliği Politikası
Siteniz İçerik Güvenliği İlkesi kullanıyorsa, şunları eklemeniz gerekir 'nonce-<value>'
ve Tracy'nin
düzgün çalışması için 'strict-dynamic'
adresinden script-src
adresine gidin. Bazı 3. eklentiler
ek yönergeler gerektirebilir. Nonce, style-src
yönergesinde desteklenmez, bu yönergeyi kullanırsanız
'unsafe-inline'
eklemeniz gerekir, ancak üretim modunda bundan kaçınılmalıdır.
Nette Framework için yapılandırma örneği:
http:
csp:
script-src: [nonce, strict-dynamic]
Saf PHP'de örnek:
$nonce = base64_encode(random_bytes(20));
header("Content-Security-Policy: script-src 'nonce-$nonce' 'strict-dynamic';");
Daha Hızlı Yükleme
Temel entegrasyon basittir, ancak web sayfasında yavaş engelleyen komut dosyalarınız varsa, Tracy'nin yüklenmesini
yavaşlatabilirler. Çözüm yerleştirmektir <?php Tracy\Debugger::renderLoader() ?>
herhangi bir komut
dosyasından önce şablonunuza yerleştirin:
<!DOCTYPE html>
<html>
<head>
<title>...<title>
<?php Tracy\Debugger::renderLoader() ?>
<link rel="stylesheet" href="assets/style.css">
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
</head>
AJAX İsteklerinde Hata Ayıklama
Tracy, jQuery veya yerel fetch
API kullanılarak yapılan AJAX isteklerini otomatik olarak yakalar. Bu istekler
Tracy çubuğunda ek satırlar olarak görüntülenerek kolay ve kullanışlı AJAX hata ayıklama olanağı sağlar.
AJAX isteklerini otomatik olarak yakalamak istemiyorsanız, JavaScript değişkenini ayarlayarak bu özelliği devre dışı bırakabilirsiniz:
window.TracyAutoRefresh = false;
Belirli AJAX isteklerinin manuel olarak izlenmesi için, Tracy.getAjaxHeader()
tarafından döndürülen değerle
X-Tracy-Ajax
HTTP başlığını ekleyin. fetch
işleviyle birlikte kullanımına ilişkin bir örnek
aşağıda verilmiştir:
fetch(url, {
headers: {
'X-Requested-With': 'XMLHttpRequest',
'X-Tracy-Ajax': Tracy.getAjaxHeader(),
}
})
Bu yaklaşım, AJAX isteklerinin seçici olarak hata ayıklamasına olanak tanır.
Veri Depolama
Tracy, AJAX istekleri ve yönlendirmeleri için Tracy çubuk panellerini ve Bluescreens'i görüntüleyebilir. Tracy kendi
oturumlarını oluşturur, verileri kendi geçici dosyalarında saklar ve bir tracy-session
çerezi kullanır.
Tracy, Tracy açılmadan önce başlatılan yerel bir PHP oturumu kullanacak şekilde de yapılandırılabilir:
session_start();
Debugger::setSessionStorage(new Tracy\NativeSession);
Debugger::enable();
Bir oturumun başlatılması daha karmaşık bir başlatma gerektiriyorsa, Tracy'yi hemen başlatabilir (böylece meydana gelen
hataları ele alabilir) ve ardından oturum işleyicisini başlatabilir ve son olarak Tracy'ye dispatch()
işlevini
kullanarak oturumun kullanıma hazır olduğunu bildirebilirsiniz:
Debugger::setSessionStorage(new Tracy\NativeSession);
Debugger::enable();
// ardından oturum başlatma
// ve oturumu başlatın
session_start();
Debugger::dispatch();
setSessionStorage()
işlevi 2.9 sürümünden beri mevcuttur, bundan önce Tracy her zaman yerel PHP oturumunu
kullanmıştır.
Özel Yıkayıcı
Scrubber, parolalar veya kimlik bilgileri gibi hassas verilerin dökümlerden sızmasını önleyen bir filtredir. Filtre,
dökülen dizi veya nesnenin her öğesi için çağrılır ve değer hassas ise true
döndürür. Bu durumda, değer
yerine *****
yazdırılır.
// anahtar değerlerinin ve `password` gibi özelliklerin dökülmesini önler,
// `password_repeat`, `check_password`, `DATABASE_PASSWORD`, vb.
$scrubber = function(string $key, $value, ?string $class): bool
{
return preg_match('#password#i', $key) && $value !== null;
};
// BlueScreen içindeki tüm dökümler için kullanırız
Tracy\Debugger::getBlueScreen()->scrubber = $scrubber;
Özel Kaydedici
Hataları, yakalanmamış istisnaları günlüğe kaydetmek ve Tracy\Debugger::log()
tarafından çağrılmak
üzere özel bir logger oluşturabiliriz. Logger, Tracy\ILogger
arayüzünü uygular.
use Tracy\ILogger;
class SlackLogger implements ILogger
{
public function log($value, $priority = ILogger::INFO)
{
// Slack'e bir istek gönderir
}
}
Ve sonra onu etkinleştiririz:
Tracy\Debugger::setLogger(new SlackLogger);
Eğer Nette Framework'ün tamamını kullanırsak, bunu NEON yapılandırma dosyasında ayarlayabiliriz:
services:
tracy.logger: SlackLogger
Monolog Entegrasyonu
Tracy paketi, monolog/monolog entegrasyonuna izin veren bir PSR-3 adaptörü sağlar.
$monolog = new Monolog\Logger('main-channel');
$monolog->pushHandler(new Monolog\Handler\StreamHandler($logFilePath, Monolog\Logger::DEBUG));
$tracyLogger = new Tracy\Bridges\Psr\PsrToTracyLoggerAdapter($monolog);
Debugger::setLogger($tracyLogger);
Debugger::enable();
Debugger::log('info'); // yazıyor: [<TIMESTAMP>] main-channel.INFO: info [] []
Debugger::log('warning', Debugger::WARNING); // yazıyor: [<TIMESTAMP>] main-channel.WARNING: uyarı [] []
nginx
Eğer Tracy nginx üzerinde çalışmıyorsa, muhtemelen yanlış yapılandırılmıştır. Eğer şöyle bir şey varsa
try_files $uri $uri/ /index.php;
olarak değiştirin
try_files $uri $uri/ /index.php$is_args$args;