Minecraft sunucu logu, sunucunuzda olan biten her şeyin zaman damgalı kaydıdır ve hemen her sorunun cevabı orada yazılıdır. Dosyanın adı logs/latest.log, yeri sunucu klasörünüzün içindeki logs dizinidir. Sorun çözmenin ilk adımı forumda arama yapmak değil, bu dosyayı açıp doğru satırı bulmaktır.
Log ilk bakışta okunamaz bir metin yığını gibi görünür. Oysa her satır aynı kalıba uyar ve o kalıbı bir kez öğrendiğinizde dosyayı taramak saniyeler sürer. Bu sayfada satır biçimini, seviye ayrımını, hangi uyarıların gürültü olduğunu ve gerçek sorunu hangi satırın gösterdiğini adım adım anlatıyoruz. Örnekler Paper 26.2 üzerinden verildi.
Log Dosyaları Nerede Durur?#
- logs/latest.log
- Aktif oturumun tam kaydı. Sunucu her başladığında sıfırlanır.
- logs/2026-08-12-1.log.gz
- Önceki oturumların sıkıştırılmış arşivi. Sondaki sayı o günün kaçıncı oturumu olduğunu belirtir.
- crash-reports/
- Yalnızca sunucu tamamen çöktüğünde dosya oluşur. Logdan ayrı bir kaynaktır.
- Konsol penceresi
- Canlı akış. Biçimi dosyadakinden biraz farklıdır; iş parçacığı adını göstermez.
Bir tuzağa dikkat: Paper sunucularında logs/debug.log diye bir dosya oluşmaz. Paper’ın log4j2 yapılandırmasında böyle bir appender tanımlı değildir; yalnızca latest.log ve arşivleri yazılır. İnternette “debug.log dosyasına bakın” diyen rehberlerin çoğu Forge veya NeoForge sunucularını anlatıyor; o platformlar kendi yapılandırmalarıyla ayrı bir hata ayıklama dosyası üretir.
java -Dlog4j.configurationFile=log4j2.xml -jar paper-26.2-112.jar --nogui. Bu, günlük kullanım için gerekli değildir; yalnızca bir geliştiriciyle sorun ayıklarken işe yarar.Bir Log Satırının Anatomisi#
Paper’ın dosyaya yazdığı satır deseni sabittir:
[%d{HH:mm:ss}] [%t/%level]: %stripAnsi{%msg}%n%xEx{full}
Bu desen pratikte şöyle görünür:
[04:18:31] [Server thread/INFO]: Starting minecraft server version 26.2
[04:18:33] [Server thread/INFO]: Preparing level "world"
[04:18:41] [Server thread/WARN]: Kagan007 moved too quickly! 12.4,0.0,-3.1
[04:18:52] [Craft Scheduler Thread #2/ERROR]: Error executing task on Server
[04:19:07] [Server thread/INFO]: Kagan007 joined the game
Parçaları tek tek ayıralım:
| Parça | Örnek | Ne anlatır? |
|---|---|---|
| Saat | [04:18:31] | Saat:dakika:saniye. Tarih yoktur, tarih dosya adındadır. |
| İş parçacığı | Server thread | Mesajı basan thread. Teşhiste en değerli sütun. |
| Seviye | WARN | INFO, WARN, ERROR, FATAL, DEBUG. |
| Mesaj | moved too quickly! | Asıl içerik. Hata varsa altında yığın izi gelir. |
Konsol penceresindeki biçim biraz farklıdır: [04:18:31 INFO]: mesaj. İş parçacığı adı görünmez. Bu yüzden ciddi bir teşhis yapacaksanız konsolu değil, dosyayı okuyun. Konsoldan komut çalıştırma tarafını merak ediyorsanız sunucu konsol komutları sayfamız ayrı bir referans sunuyor.
Seviyeler: INFO, WARN, ERROR, FATAL#
Her satırın bir seviyesi vardır ve önceliklendirmeyi bu belirler.
INFO#
Normal işleyiş. Açılış, kapanış, oyuncu giriş-çıkışı, eklenti yükleme mesajları. Sorun ararken bunları atlayın; ama hatanın hemen üstündeki INFO satırları o anda ne olduğunu söylediği için değerlidir.
WARN#
Bir şeyler ters ama sunucu çalışmaya devam ediyor. Bir kısmı gerçek sorun, bir kısmı gürültü. Ayrımı aşağıda anlatıyoruz.
ERROR#
Gerçek bir başarısızlık. Bir eklenti görevini yapamadı, bir dosya okunamadı, bir olay işlenemedi. Yığın izi genelde buraya iliştirilir.
FATAL#
Sunucu kapanıyor. Nadirdir ve ciddidir. Bu satırı gördüğünüzde altındaki yığın izinin tamamını okuyun.
İş Parçacığı Sütunu Neden Kritik?#
Seviyeden sonra bakacağınız yer thread adıdır:
[Server thread]— ana oyun döngüsü. Buradaki hatalar tick’i doğrudan etkiler, TPS düşürür ve sunucuyu çökertebilir. En yüksek öncelik.[Craft Scheduler Thread #N]— eklentilerin asenkron görevleri. Buradaki hata genelde tek bir eklentiyi ilgilendirir, sunucu ayakta kalır.[Netty Server IO #N]— ağ katmanı. Bağlantı kopmaları ve paket hataları burada görünür.- Eklenti adı taşıyan thread’ler — suçlu doğrudan yazılıdır, aramaya gerek kalmaz.
Açılış Logunun İlk 30 Saniyesi#
Sunucu açılışındaki ilk otuz saniye, logun en bilgi yoğun bölümüdür. Sıra hemen her zaman aynıdır ve bu sırayı bilmek, hangi aşamada takıldığınızı anında gösterir:
-
Sürüm ve ortam bildirimi#
Starting minecraft server version 26.2satırı hangi sürümü çalıştırdığınızı kesin olarak söyler. Yükseltme yaptığınızı sanıp eski jar’ı başlattıysanız burada anlarsınız. -
Bellek ve yapılandırma satırları#
Ayrılan heap miktarı ve okunan yapılandırma dosyaları listelenir.
server.propertiesiçinde yazım hatası varsa uyarı tam burada basılır. -
Eklenti yükleme turu#
Her eklenti için bir satır düşer. “Could not load”, “Unsupported API version” ve eksik bağımlılık uyarıları bu blokta çıkar ve gözden kaçması çok kolaydır.
-
Dünya hazırlığı#
Preparing level "world"ve spawn chunk yükleme satırları. Bozuk region dosyaları ilk kez burada rapor edilir. -
Açılış tamamlandı#
Done (12.482s)! For help, type "help"satırı sunucunun bağlantı kabul etmeye hazır olduğunu bildirir. Bu satırı görmediyseniz sunucu ayakta değildir.
Bu sıradaki bir kopukluk teşhisin yarısıdır. Örneğin “Preparing level” satırından sonra hiçbir şey yazılmıyorsa sorun dünya verisindedir; eklenti turunda takılıyorsa sorun bir jar dosyasındadır.
Hangi Satırlar Gürültü, Hangileri Gerçek Sorun?#
Yeni sunucu sahiplerinin en çok vakit kaybettiği yer burasıdır. Aşağıdaki WARN satırları çoğu sunucuda normaldir ve tek başına bir arıza göstermez:
- “moved too quickly” ve “moved wrongly” — oyuncu hareketiyle sunucunun hesabı uyuşmadı. Lag, elytra, at zıplaması veya lifta benzer mekanizmalar bunu tetikler.
- Köylü ve isimli yaratık ölüm bildirimleri — çiftliği olan her sunucuda logu doldurur.
- Tek seferlik “Can’t keep up! Is the server overloaded?” satırları — yedek alırken veya chunk üretirken görülmesi olağandır. Sürekli tekrarlıyorsa gerçek bir performans sorunu vardır ve bu uyarıyı ayrıntılı inceleyen sayfaya bakmalısınız.
- Eklentilerin kendi bilgilendirme mesajları — sürüm kontrolü, lisans bildirimi, istatistik gönderimi.
Gürültüyü kaynağında azaltmak isterseniz spigot.yml üzerinden birkaç eşiği yükseltebilirsiniz:
settings:
moved-too-quickly-multiplier: 10.0
moved-wrongly-threshold: 0.0625
timeout-time: 60
log-villager-deaths: false
log-named-deaths: false
commands:
log: false
Logu Filtreleme ve Arama#
Binlerce satırlık bir dosyayı gözle taramayın. Önce hataları süzün, sonra bulduğunuz satırın çevresini okuyun.
# Sadece hata ve olumcul satirlar:
grep -E '/(ERROR|FATAL)\]' logs/latest.log
# Arsivlenmis loglarda ayni arama:
zgrep -E '/(ERROR|FATAL)\]' logs/*.log.gz
# Arsivi bastan sona okuma:
zcat logs/2026-08-12-1.log.gz | less
# Bulunan satirin oncesi ve sonrasi (en cok ise yarayan):
grep -n -B 3 -A 12 "Caused by:" logs/latest.log
# Belirli bir oyuncunun izini surme:
grep -i "Kagan007" logs/latest.log
# Windows sunucularda ayni islemler:
Select-String -Path .\logs\latest.log -Pattern "ERROR","FATAL"
Select-String -Path .\logs\latest.log -Pattern "Caused by:" -Context 3,12
Get-Content .\logs\latest.log -Tail 50 -Wait
Son komut özellikle işe yarar: -Wait (Linux’ta tail -f) logu canlı izler. Bir hatayı yeniden üretebiliyorsanız, logu canlı izlerken hatayı tetikleyin; ekranda beliren ilk satırlar tam olarak aradığınız satırlardır.
Not Defteri büyük log dosyalarında donar; satır numarası ve arama özellikleri için Notepad++ kullanın.
Oyuncu Şikayetini Logdan Doğrulama#
Log yalnızca çökme araştırmak için değildir; günlük moderasyonun da temel aracıdır. Bir oyuncu “eşyalarım kayboldu” ya da “sunucudan atıldım” dediğinde yapacağınız ilk iş, olay saatini öğrenip logda o aralığa bakmaktır.
# Belirli bir saat araligini cikar (20:00 - 20:15 arasi):
grep -E '^\[20:(0[0-9]|1[0-5]):' logs/latest.log
# Oyuncunun giris-cikis kayitlari:
grep -E "Kagan007 (joined|left) the game" logs/latest.log
# Atilma nedenini bul:
grep -i -E "disconnect|kicked|lost connection" logs/latest.log
Log satırındaki saatin sunucunun saat dilimine göre yazıldığını unutmayın; oyuncunun bildirdiği saat kendi ülkesine göre olabilir. Sunucunun saatini date (Linux) veya Get-Date (Windows) ile doğrulayıp aradaki farkı hesaplayın.
Bağlantı kesilme mesajları oyuncunun ekranında İngilizce belirir ve logdaki karşılığıyla eşleştirilebilir. Örneğin oyuncu Timed out gördüyse logda o oyuncunun bağlantı kaybı satırı bulunur; You are not white-listed on this server! gördüyse whitelist kaydı eksiktir. Bu eşleştirme, “sorun bende mi sunucuda mı” sorusunu tek bakışta çözer.
Sık Görülen Log Satırları ve Anlamları#
Aşağıdaki satırların hepsi gerçek sunucu loglarından alınmış tiplerdir. Karşınıza çıkan metni buradan eşleştirip ilgili sayfaya geçebilirsiniz.
[00:00:00] [Server thread/WARN] Could not load 'plugins/MyAwesomePlugin-1.0.0.jar' in folder 'plugins'
[00:00:00] [Server thread/WARN] org.bukkit.plugin.UnknownDependencyException: Unknown/missing
dependency plugins: [Vault]. Please download and install these plugins to run 'MyAwesomePlugin'.
Bu blokta altın kural şudur: her zaman ikinci satırı okuyun. Birinci satır sadece “yüklenemedi” der, nedeni bir alttaki satır söyler. Burada eksik bağımlılık var. Diğer varyantlar için “Could not load plugin” hatası sayfasına bakın.
| Log satırı | Anlamı | Nereye bakmalı? |
|---|---|---|
UnsupportedClassVersionError ... class file version 69.0 | Jar Java 25 ile derlenmiş, sunucu daha eski Java ile çalışıyor | Java sürüm hatası |
NoSuchMethodError / NoClassDefFoundError | 26.1 unobfuscation sonrası yeniden derlenmemiş eklenti | Sürüm yükseltme |
Unsupported API version 1.21 | Eklentinin api-version değeri sunucunun desteklediğinden yeni | Eklentiyi güncelleyin |
Region file ... has invalid sector at index | Bozuk region (.mca) dosyası | Bozuk dünya kurtarma |
Can’t keep up! Is the server overloaded? | Tick süresi aşıldı; sürekli tekrarlıyorsa performans sorunu | TPS ve donanım kontrolü |
java.lang.OutOfMemoryError: Java heap space | Heap doldu; sunucu bellek yetersizliğinden düşüyor | Out of Memory hatası |
Legacy plugin ... does not specify an api-version | Çok eski eklenti; çalışabilir ama risklidir | Eklentiyi değiştirin |
Yığın İzi (Stack Trace) Nasıl Okunur?#
ERROR satırlarının altına eklenen uzun blok yığın izidir. İçinde kaybolmamak için tek kural yeter: asıl neden en alttaki Caused by: bloğundadır, ilk satırda değil. Yukarıdaki satırlar sonucu, aşağıdakiler sebebi anlatır.
Yığın izinde net.minecraft ve org.bukkit dışında bir paket adı görüyorsanız — örneğin com.ornek.eklenti.listener.JoinListener.onJoin — suçlu bulunmuş demektir; satır numarası bile yazılıdır. Yalnızca Minecraft paketleri görünüyorsa nedeni bellek, disk ya da bozuk dünya verisinde arayın.
Sunucu tamamen çöktüyse logun yanında crash-reports/ klasöründe ayrı bir dosya da oluşur. İkisini birlikte okumak gerekir; ayrıntılı yöntem için crash report okuma rehberimize geçin.
Log Yönetimi ve Disk Alanı#
Aktif bir sunucuda logs/ klasörü aylar içinde yüzlerce arşiv biriktirir. Bu dosyalar küçüktür ama sayıları arttıkça yedek arşivlerinizi şişirir ve dosya yöneticisini yavaşlatır.
# 30 gunden eski log arsivlerini sil:
find logs/ -name "*.log.gz" -mtime +30 -delete
# Klasorun toplam boyutunu gor:
du -sh logs/
latest.log dosyasını sunucu çalışırken silmeyin. Linux’ta dosya silinse bile süreç aynı tanıtıcıya yazmaya devam eder; disk alanı sunucu yeniden başlatılana kadar boşalmaz. Yer açmak istiyorsanız yalnızca .log.gz arşivlerini temizleyin.Destek talebi açarken logun tamamını yapıştırmak yerine ilgili 30–50 satırı ve varsa yığın izinin tamamını gönderin. Web panelinden çalışıyorsanız log dosyasını panel dosya yöneticisi üzerinden indirip inceleyebilirsiniz.
Özetle#
Minecraft sunucu logu okumak öğrenilmesi yarım saat süren, sonra her gün işinize yarayan bir beceridir. Dört şeyi aklınızda tutun: dosya logs/latest.log içindedir, satırda tarih değil yalnızca saat vardır, iş parçacığı sütunu hatanın ne kadar ciddi olduğunu söyler ve yığın izinde asıl neden en alttaki Caused by: satırındadır.
Paper’da debug.log aramayın, o dosya oluşmaz. Gürültüyü spigot.yml eşikleriyle azaltabilirsiniz ama önce neyi susturduğunuzu bilin. Çözemediğiniz bir hata kalırsa Minecraft sunucu hataları ve çözümleri sayfası en sık görülen senaryoları tek tek ele alıyor; performans şüphesi varsa spark ile profil çıkarmak logun ötesine geçmenizi sağlar.