PHP ile Loglamaya Bakış

Ebru Aydemir
FLO Teknoloji
3 min readSep 27, 2023

--

Loglama işlemi, uygulamanın çalışma zamanında oluşan olayları kaydetmek ve bu kayıtları izlemek için kullanılır. Şimdi PHP ile loglama sistemlerini uygulamak için yaygın olarak kullanılan yöntemler ve araçlarla ilgili detaylara bakalım.

Dosya Tabanlı Loglama

Aşağıdaki gibi istenilen veriyi alıp log dosyasına bu metni ekleyip kaydedebilirsiniz.

$logMessage = "Kullanıcı giriş yaptı: " . $_SESSION['username'];
logMessage($logMessage);

$logMessage = "Bir hata oluştu: " . $errorDescription;
logMessage($logMessage);

function logMessage($message) {
$logFile = "app.log"; // Log dosyasının adı ve yolu

$timestamp = date("Y-m-d H:i:s");
$logMessage = "[{$timestamp}] {$message}\n";

// Log mesajını dosyaya eklenir
file_put_contents($logFile, $logMessage, FILE_APPEND);
}

Veritabanı Loglama

Logları bir veritabanına kaydetmek istiyorsanız, veritabanı bağlantısı oluşturarak ve uygun tabloya logları ekleyerek bu işlemi gerçekleştirebilirsiniz.

Syslog Kullanımı

PHP’de syslog protokolünü kullanarak log mesajları oluşturmak ve sistemin olay günlüğüne yazmak için syslog() fonksiyonu kullanılır.

$message = "Bu bir syslog örneği"; // Log mesajı
$facility = LOG_USER; // Log kaynağı veya türü (örneğin, LOG_USER)
$severity = LOG_INFO; // Log seviyesi (örneğin, LOG_INFO)

// syslog fonksiyonunu kullanarak log kaydı yap
openlog("MyApp", LOG_PID | LOG_PERROR, $facility);
syslog($severity, $message);
closelog();

Bu log kaydı, genellikle /var/log/syslog veya /var/log/messages gibi sistem log dosyalarına yazılır. İzinler de bu konuda önemlidir. Ayrıca logları terminale tail -f /var/log/syslog yazarak takip edebiliriz.

Monolog Kütüphanesi

Farklı hedeflere (dosya, veritabanı, e-posta, syslog vb.) log mesajlarını yönlendirmenizi sağlayan loglama kütüphanesidir.

composer require monolog/monolog # monolog kütüphanesi projeye eklenir

require 'vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

// Monolog logger oluştur
$log = new Logger('my_logger');
$log->pushHandler(new StreamHandler('app.log', Logger::INFO));

// Log mesajı oluştur ve logla
$name = 'Ebru Aydemir'; // Kullanıcı adım
$log->info('Kullanıcı adı: ' . $name);

Graylog

Graylog, farklı kaynaklardan (sunucular, ağ cihazları, uygulamalar) gelen logları merkezi bir konumda toplayarak işler. Bu loglar, farklı protokollerle (GELF, syslog, JSON) alınabilir. Log verileri MongoDB gibi bir veritabanında depolanır ve Elasticsearch ile indekslenir, bu sayede hızlı erişim sağlanır. GELF (Graylog Extended Log Format) standardı kullanılarak log verileri toplanır ve işlenir. Bu yapı, log verilerini standart bir formatta toplar. Graylog’un web arayüzü sayesinde log verileri sorgulanabilir, filtrelenir, analiz edilir ve görselleştirilir. Kritik durumları hızlı bir şekilde tespit etmek için belirli koşullara dayalı alarmlar oluşturulabilir. Güvenlik açısından log verilerine erişim kontrolü sağlanır ve yetkilendirme mekanizmaları ile güvenlik önlemleri sunulur.

Ayrıca, Graylog çeşitli uzantılar ve entegrasyonlar aracılığıyla diğer sistemlerle uyumlu çalışabilir, bu da esnekliğini artırır. Sonuç olarak, Graylog, verimli log yönetimi için güçlü bir açık kaynaklı platformdur.

Diğer Loglama Araçları

  • Loggly: Loggly bulut tabanlı bir log yönetim çözümüdür. PHP uygulamalarınızın loglarını Loggly’e iletebilir ve bu platformda analiz ederek görselleştirebilirsiniz.
  • Papertrail: Papertrail merkezi bir log yönetim ve gerçek zamanlı log izleme hizmetidir. PHP uygulamalarınızdan Papertrail’e logları iletebilir ve bu platformda izleyebilirsiniz.
  • Sentry: Sentry hata izleme ve izleme platformudur. PHP uygulamalarınızda meydana gelen hataları yakalayabilir, izleyebilir ve bu hataların ayrıntılarını Sentry’e gönderebilirsiniz.
  • Fluentd: Fluentd açık kaynaklı bir veri işleme aracıdır ve PHP uygulamalarının loglarını toplayıp işleyerek çeşitli hedeflere iletebilir.
  • ELK Stack (Elasticsearch, Logstash, Kibana): ELK Stack popüler bir loglama ve analiz platformudur. Logstash aracılığıyla PHP uygulamalarının loglarını toplayabilir, Elasticsearch ile indeksleyebilir ve Kibana aracılığıyla analiz edebilirsiniz.

--

--