Günlük Oluşturma ve Hata Giderme

Java’da kullanılabilir olan birkaç tane günlük oluşturma çerçevesi mevcuttur. Günlük oluşturma, System.out.println() ile stdout ya da stderr üzerine yazdırma için, birkaç sebep yüzünden tercih edilebilirdir:

  • Günlüğe kaydedilen mesajlar, kaydedilen mesajların nereden geldiğini anlamayı kolaylaştıran bir kaynak adı ile etiketlenir.

  • Günlüğe kaydedilen iletiler, basit filtrelemeye izin veren bir önem düzeyine sahiptir (örneğin, tüm kritik olmayan bildirimleri devre dışı bırakma).

  • Mevcut sunucu yapısı belirli kaynaklardan gelen mesajları etkinleştirmenize veya devre dışı bırakmanıza izin verir.

Sponge uses org.apache.logging.log4j.Logger, not java.util.logging.Logger.

Günlük Oluşturucu Alma

Eklentilerin başlatılması esnasında kullanılan Guice modülü, eklenti odaklı bir günlük oluşturucuya sahiptir. Bu durum, eklentiniz için, önceden doğru eklenti ID’siyle ayarlanmış günlük oluşturucuyu almak adına @Inject ile bir alan, metot ya da kurucuyu ek açıklama olarak belirtmenize olanak tanır.

Not

Eklenti ID’nizi yapılandırmak hakkında bilgi için, Ana eklenti sınıfı makalesine göz atın.

Örnek - Alan

import com.google.inject.Inject;
import org.apache.logging.log4j.Logger;

@Inject
private Logger logger;

Örnek - Yöntem

private Logger logger;

@Inject
private void setLogger(Logger logger) {
    this.logger = logger;
}

Örnek - Oluşturucu

// For the purpose of this example, "Banana" is the class name

private final Logger logger;

@Inject
public Banana(Logger logger) {
    this.logger = logger;
}

Sunucunuzu, eklenti yüklendiğinde Guice enjektörü ile somutlaştırıldığı gibi ana eklenti bölümünüzde ayarlamanız önerilir.

İsteğe bağlı olarak günlükçünüzün ayarlandığı aynı sınıfa alma yöntemi de oluşturmak idealdir. Aşağıda bir getter yöntemi örneği verilmiştir.

public Logger getLogger() {
    return logger;
}

Mesajları Yayımlama

Günlük oluşturucunuz ile mesaj yollamak çok kolaydır.

Not

Aşağıdaki örnek, önceki bölümde gösterildiği üzere, günlük oluşturucunuzun alma metodunun adının getLogger() olduğunu varsaymaktadır. Alma metodunuzu nasıl adlandırdığınıza bağlı olarak, bu ad sizin için farklı olabilir.

getLogger().info("String");
getLogger().debug("String");
getLogger().warn("String");
getLogger().error("String");

Bu satır yayınlamak istediğiniz mesajdır. Örneğin:

getLogger().warn("This is a warning!");