Hata Kayıtları
Yakalanmış hataları okuyan, temizleyen ve kayıt ayarlarını yöneten yedi uç.
Genel Bakış
Bu yedi uç yakalanmış hataları okur, temizler ve hangi defterlerin tutulacağını ayarlar.
Bir satır bir olay değil bir sorundur. Aynı hata yüz kez tekrarlarsa tek satır kalır, sayacı artar ve son görülme zamanı yenilenir. Bu yüzden kayıtlar imzayla adreslenir, kimlikle değil.
Kayıtlar bir geçmiştir: bir satır "şu an bozuk" demez, "o an bozuktu" der. Bir hatayı düzeltmeye girişmeden önce hâlâ olup olmadığını ölçmek gerekir.
Referans
Hata Kayıtlarını Listeleme
Yakalanmış hataları döndürür. Her satır bir olay değil, bir sorundur.
system ya da database.error, warning ya da fatal gibi.curl -G 'https://panel.ornek.com/api/v1/admin/tools/logs/errors' \
-H "Authorization: Bearer $API_KEY" \
-d min_occurrence=5 \
-d hide_noise=1const url = new URL('https://panel.ornek.com/api/v1/admin/tools/logs/errors');
url.searchParams.set('min_occurrence', '5');
url.searchParams.set('hide_noise', '1');
const res = await fetch(url, { headers: { Authorization: `Bearer ${apiKey}` } });
const body = await res.json();$url = 'https://panel.ornek.com/api/v1/admin/tools/logs/errors?' . http_build_query([
'min_occurrence' => 5,
'hide_noise' => 1,
]);
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Liste GOVDEYI tasimaz; yigin izini gormek icin tek kaydin detayini okuyun.
$errors = Api::Tools()->GetErrorLogs([], [
'min_occurrence' => 5,
'hide_noise' => 1,
])['data'];Hata Kaydı Detayı
Tek bir hatayı, yığın izi ve isteğin bağlamıyla birlikte döndürür.
system ya da database. Varsayılan system; veritabanı hatası ararken açıkça vermeniz gerekir.curl 'https://panel.ornek.com/api/v1/admin/tools/logs/errors/a1b2c3d4e5f600112233445566778899' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/logs/errors/a1b2c3d4e5f600112233445566778899', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/logs/errors/a1b2c3d4e5f600112233445566778899');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Baglam ILK gorulduge aittir: sonraki tekrarlar sayaci artirir ama govdeyi degistirmez.
$log = Api::Tools()->GetErrorLog(['signature' => 'a1b2c3d4e5f600112233445566778899'])['data'];Hata Kayıtlarını Silme
Seçtiğiniz hataları imzalarına göre siler.
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/tools/logs/errors' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"signatures":["a1b2c3d4e5f600112233445566778899"]}'const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/logs/errors', {
method: 'DELETE',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ signatures: ['a1b2c3d4e5f600112233445566778899'] }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/logs/errors');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['signatures' => ['a1b2c3d4e5f600112233445566778899']]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Silinen sayiyi gonderdiginizle karsilastirin: eslesmeyen imzalar sessizce atlanir.
$sent = array_column($errors, 'signature');
$response = Api::Tools()->DeleteErrorLogs(['signatures' => $sent]);
$missed = count($sent) - $response['data']['count'];Tarihe Göre Temizleme
Verilen tarihten eski hata kayıtlarını siler. İki defteri birden süpürür.
curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/logs/errors/cleanup' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"before":"2026-01-01"}'const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/logs/errors/cleanup', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ before: '2026-01-01' }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/logs/errors/cleanup');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['before' => '2026-01-01']),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Cozulmus gecmisi silmek sonraki her kaydi GERCEK bir sinyal yapar.
$response = Api::Tools()->CleanupErrorLogs(['before' => '2026-01-01']);
$system = $response['data']['deleted']['system'];Eski Dosyaları İçe Aktarma
Diskte kalmış eski hata dosyalarını okuyup kayıtlara aktarır.
curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/logs/errors/rebuild' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/logs/errors/rebuild', {
method: 'POST',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/logs/errors/rebuild');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Bu bir INDEKS yeniden kurma degil, eski dosya deposundan ice aktarmadir.
// Aktarilanlar taze yakalamayla ayni temizlemeden gecer.
$response = Api::Tools()->RebuildErrorLogs();Kayıt Ayarlarını Getirme
Hangi defterlerin tutulduğunu ve hata ayıklamanın açık olup olmadığını döndürür.
curl 'https://panel.ornek.com/api/v1/admin/tools/logs/settings' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/logs/settings', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/logs/settings');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);$response = Api::Tools()->GetLogSettings();Kayıt Ayarlarını Yazma
Hangi defterlerin tutulacağını ve hata ayıklamanın açık olup olmayacağını yazar.
curl -X PUT 'https://panel.ornek.com/api/v1/admin/tools/logs/settings' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"error_log":1,"module_log":0}'const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/logs/settings', {
method: 'PUT',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ error_log: 1, module_log: 0 }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/logs/settings');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'error_log' => 1,
'module_log' => 0,
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Sorgu kaydini yalniz kendi adresinizde acin: acik birakildiginda disk hizla dolar.
Api::Tools()->UpdateLogSettings([
'query_logging' => 1,
'query_logging_ips' => ['203.0.113.5'],
]);Tuzaklar
Uzun bir hata listesi, o kadar açık sorun olduğu anlamına gelmez: çoğu kayıt çoktan düzeltilmiş olabilir. Bir hatanın hâlâ yaşandığını anlamanın yolu sayacı okumak, ilgili sayfaya birkaç istek atmak ve sayacı yeniden okumaktır. Kımıldamıyorsa düzeltilecek bir şey yoktur.
Detaydaki yığın izi, adres ve kullanıcı bilgisi hatanın ilk yakalandığı andan gelir; sonraki tekrarlar yalnız sayacı ve son görülme zamanını günceller. Yani bugünkü bir tekrarı aylar önceki bir bağlamla okuyor olabilirsiniz.
Sistem hataları ve veritabanı hataları ayrı tutulur. Detay ucu varsayılan olarak sistem defterine bakar; veritabanı hatasının imzasını verip türü belirtmezseniz kayıt bulunamaz. Tarihe göre temizlik ise ikisini birden süpürür.
Veritabanı sorgu kaydı her isteği yazar ve açık bırakıldığında hızla büyür. Adres sınırıyla birlikte kullanın: yalnız kendi adresinizi verirseniz kayıt sizin isteklerinizle sınırlı kalır. Aynı şekilde hata ayrıntısını canlıda açık bırakmak ziyaretçiye iç bilgi gösterir.
Adı öyle dursa da bu uç bir indeks yeniden kurmaz: diskte kalmış eski dosya deposundan içe aktarım yapar. Aktaracak dosya kalmadıysa sıfır döner, bu bir hata değildir. İçe alınan eski gövdeler taze yakalamayla aynı temizlemeden geçer.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.