Bir uygulama geliştirirken her şey yolunda giderken log sisteminin pek önemi yokmuş gibi görünür.
Program çalışır, veritabanı bağlantısı kurulur, kullanıcı giriş yapar ve işler normal şekilde ilerler. Fakat bir gün müşteriden şu mesaj gelir:
"Sisteme giriş yapamıyoruz."
İşte o noktada log kaydı tutmuyorsanız işiniz zorlaşmaya başlar.
Çünkü uygulama size neyin yanlış gittiğini anlatamaz. Hata oluşmuştur ama geride hiçbir iz bırakmamıştır.
Bu yüzden profesyonel projelerde dosya işlemleri ve log mekanizmaları neredeyse uygulamanın kendisi kadar önemlidir.
Bu yazıda Java'da dosya işlemlerinin temel mantığını inceleyecek, ardından basit ama etkili bir log sisteminin nasıl geliştirilebileceğini ele alacağız.
Bazı durumlarda bilgilerin doğrudan dosya sistemine yazılması gerekir.
Örneğin:
Basit bir örnek düşünelim.
Bu kod çalıştığında belirtilen isimde bir dosya oluşturulur.
Dosya zaten varsa yeniden oluşturulmaya çalışılmaz.
Küçük bir detay gibi görünse de gerçek projelerde bu kontrol oldukça önemlidir.
Asıl amaç içerisine bilgi yazabilmektir.
Bu yöntem mevcut dosyanın sonuna yeni veri ekler.
Özellikle log sistemlerinde en çok kullanılan yaklaşım budur.
Çünkü eski kayıtların silinmesi istenmez.
Ardından:
Bu yöntem küçük ve orta ölçekli dosyalarda oldukça kullanışlıdır.
Aslında mantık oldukça basittir.
Uygulama ne yapıyorsa bunu bir dosyaya yazar.
Örneğin:
09:15 Kullanıcı giriş yaptı
09:17 Sipariş oluşturuldu
09:20 Veritabanı bağlantısı koptu
Birkaç satırlık bu kayıt bile bazen saatlerce sürecek hata ayıklama sürecini birkaç dakikaya indirebilir.
Aşağıdaki bilgiler mümkün olduğunca loglara eklenmelidir.
Basit bir log örneği:
2026-06-02 14:25:11 [INFO] Kullanıcı sisteme giriş yaptı
Kayıtlar önem derecesine göre ayrılır.
Bu sınıflandırma sayesinde binlerce satırlık log arasında aradığınız kaydı daha kolay bulabilirsiniz.
Kullanımı
Gerçek projelerde bu yapı dosyaya yazacak şekilde geliştirilir.
En yaygın seçenekler şunlardır:
Özellikle Spring Boot kullanan ekiplerin büyük bölümü Logback tercih etmektedir.
Bu yaklaşım gelecekte ciddi sorunlara neden olur.
Bu nedenle log döndürme (log rotation) mekanizması kullanmak gerekir.
Ama üretim ortamında yaşanan sorunları çoğu zaman göremezsiniz.
Orada sizin gözünüz ve kulağınız log kayıtlarıdır.
İyi tasarlanmış bir log sistemi sayesinde:
Bu yüzden profesyonel yazılım ekipleri log sistemlerine yalnızca bir kayıt mekanizması olarak değil,
uygulamanın önemli bir parçası olarak bakar.
Küçük bir metin dosyasına yazılan birkaç satırlık kayıt bile günler sürebilecek bir sorunun dakikalar içerisinde çözülmesini sağlayabilir.
Eğer Java ile masaüstü, web veya kurumsal uygulamalar geliştiriyorsanız, dosya işlemleri ve loglama konularını erken öğrenmek ileride size ciddi zaman kazandıracaktır. Çünkü iyi yazılmış bir uygulama yalnızca çalışan uygulama değildir; gerektiğinde kendisini anlatabilen uygulamadır.
Bir dahaki Makelemizde "Spring Security ile JWT Authentication Sistemi Kurulumu" konusunu detaylı bir şekilde konu edineceğiz.
Sonraki makalemizde görüşene dek mavi ekransız bugsuz ve sorunsuz sistemlerle çalışmanız dileği ile hoşçakalın.
Program çalışır, veritabanı bağlantısı kurulur, kullanıcı giriş yapar ve işler normal şekilde ilerler. Fakat bir gün müşteriden şu mesaj gelir:
"Sisteme giriş yapamıyoruz."
İşte o noktada log kaydı tutmuyorsanız işiniz zorlaşmaya başlar.
Çünkü uygulama size neyin yanlış gittiğini anlatamaz. Hata oluşmuştur ama geride hiçbir iz bırakmamıştır.
Bu yüzden profesyonel projelerde dosya işlemleri ve log mekanizmaları neredeyse uygulamanın kendisi kadar önemlidir.
Bu yazıda Java'da dosya işlemlerinin temel mantığını inceleyecek, ardından basit ama etkili bir log sisteminin nasıl geliştirilebileceğini ele alacağız.
Dosya İşlemleri Neden Önemlidir?
Java uygulamaları çoğu zaman yalnızca veritabanıyla çalışmaz.Bazı durumlarda bilgilerin doğrudan dosya sistemine yazılması gerekir.
Örneğin:
- Hata kayıtları
- Kullanıcı aktiviteleri
- Yedekleme dosyaları
- Konfigürasyon ayarları
- Rapor çıktıları
Java'da Dosya Oluşturma
Java'nın modern sürümlerinde dosya işlemleri için en sık kullanılan paketlerden biri NIO'dur.Basit bir örnek düşünelim.
JavaScript:
Path path = Paths.get("uygulama.log"); if (Files.notExists(path)) { Files.createFile(path); }
Dosya zaten varsa yeniden oluşturulmaya çalışılmaz.
Küçük bir detay gibi görünse de gerçek projelerde bu kontrol oldukça önemlidir.
Dosyaya Veri Yazmak
Oluşturulan dosya tek başına pek bir işe yaramaz.Asıl amaç içerisine bilgi yazabilmektir.
JavaScript:
String mesaj = "Uygulama başlatıldı";
Files.write( Paths.get("uygulama.log"),
mesaj.getBytes(), StandardOpenOption.APPEND );
Özellikle log sistemlerinde en çok kullanılan yaklaşım budur.
Çünkü eski kayıtların silinmesi istenmez.
Dosyadan Veri Okuma
Bazen yazdığımız kayıtları tekrar okumamız gerekir.
JavaScript:
List<String> satirlar = Files.readAllLines( Paths.get("uygulama.log") );
JavaScript:
for(String satir : satirlar){ System.out.println(satir); }
Log Sistemi Nedir?
Log sistemi, uygulama içerisinde gerçekleşen olayların kayıt altına alınmasını sağlar.Aslında mantık oldukça basittir.
Uygulama ne yapıyorsa bunu bir dosyaya yazar.
Örneğin:
09:15 Kullanıcı giriş yaptı
09:17 Sipariş oluşturuldu
09:20 Veritabanı bağlantısı koptu
Birkaç satırlık bu kayıt bile bazen saatlerce sürecek hata ayıklama sürecini birkaç dakikaya indirebilir.
İyi Bir Log Kaydında Neler Bulunmalıdır?
Her kayıt aynı değere sahip değildir.Aşağıdaki bilgiler mümkün olduğunca loglara eklenmelidir.
Bilgi | Neden Önemli |
|---|---|
| Tarih | Olayın zamanı |
| Saat | Sorunun oluştuğu an |
| Log seviyesi | Hata veya bilgilendirme |
| Mesaj | Olayın açıklaması |
| Kullanıcı bilgisi | Takip kolaylığı |
2026-06-02 14:25:11 [INFO] Kullanıcı sisteme giriş yaptı
Log Seviyeleri Ne İşe Yarar?
Profesyonel uygulamalar tüm kayıtları aynı şekilde tutmaz.Kayıtlar önem derecesine göre ayrılır.
| Seviye | Açıklama |
| INFO | Bilgilendirme |
| DEBUG | Geliştirici kayıtları |
| WARN | Uyarılar |
| ERROR | Hatalar |
| FATAL | Kritik hatalar |
Bu sınıflandırma sayesinde binlerce satırlık log arasında aradığınız kaydı daha kolay bulabilirsiniz.
Basit Bir Log Sınıfı Oluşturmak
Küçük projelerde temel bir Logger sınıfı yeterli olabilir.
JavaScript:
public class Logger { public static void info(String mesaj) { System.out.println( "[INFO] " + mesaj ); } }
JavaScript:
Logger.info( "Uygulama başlatıldı" );
Hazır Log Kütüphaneleri Kullanılmalı mı?
Belirli bir noktadan sonra kendi log sisteminizi geliştirmek yerine hazır çözümler kullanmak daha mantıklıdır.En yaygın seçenekler şunlardır:
Kütüphane | Kullanım Alanı |
| Log4j | Kurumsal projeler |
| Logback | Spring Boot |
| java.util.logging | Java standart |
| SLF4J | Soyutlama katmanı |
Özellikle Spring Boot kullanan ekiplerin büyük bölümü Logback tercih etmektedir.
Dosya İşlemlerinde Yapılan Yaygın Hatalar
Yeni başlayan geliştiricilerin sık yaptığı bazı hatalar vardır.Tüm Hataları Yutmak
Kod:
catch(Exception e){ }
Bu yaklaşım gelecekte ciddi sorunlara neden olur.
Log Tutmamak
Uygulama hata verdiğinde sebebi bulmak zorlaşır.
Dosya Boyutunu Kontrol Etmemek
Aylarca çalışan uygulamalarda log dosyaları gigabayt seviyesine ulaşabilir.Bu nedenle log döndürme (log rotation) mekanizması kullanmak gerekir.
Gerçek Hayatta Loglar Neden Bu Kadar Değerli?
Bir uygulama geliştirirken kodunuzu siz yazarsınız.Ama üretim ortamında yaşanan sorunları çoğu zaman göremezsiniz.
Orada sizin gözünüz ve kulağınız log kayıtlarıdır.
İyi tasarlanmış bir log sistemi sayesinde:
- Hatalar daha hızlı bulunur
- Performans sorunları tespit edilir
- Kullanıcı hareketleri izlenebilir
- Güvenlik olayları analiz edilebilir
Bu yüzden profesyonel yazılım ekipleri log sistemlerine yalnızca bir kayıt mekanizması olarak değil,
uygulamanın önemli bir parçası olarak bakar.
Sevgili THS ailesi
Java'da dosya işlemleri öğrenmesi nispeten kolay konular arasında yer alsa da gerçek değerini log sistemleri geliştirmeye başladığınızda gösterir.Küçük bir metin dosyasına yazılan birkaç satırlık kayıt bile günler sürebilecek bir sorunun dakikalar içerisinde çözülmesini sağlayabilir.
Eğer Java ile masaüstü, web veya kurumsal uygulamalar geliştiriyorsanız, dosya işlemleri ve loglama konularını erken öğrenmek ileride size ciddi zaman kazandıracaktır. Çünkü iyi yazılmış bir uygulama yalnızca çalışan uygulama değildir; gerektiğinde kendisini anlatabilen uygulamadır.
Bir dahaki Makelemizde "Spring Security ile JWT Authentication Sistemi Kurulumu" konusunu detaylı bir şekilde konu edineceğiz.
Sonraki makalemizde görüşene dek mavi ekransız bugsuz ve sorunsuz sistemlerle çalışmanız dileği ile hoşçakalın.

