Penebangan dan Debugging

Ada beberapa kerangka pendataan yang tersedia untuk digunakan pada Java. Pendataan lebih baik dicetak ke stdout atau stderr dengan System.out.println() untuk sejumlah alasan:

  • Log pesan label dengan nama sumber, sehingga lebih mudah untuk mencari tahu di mana log pesan-pesan yang datang dari.

  • Pesan tercatat memiliki tingkat keparahan yang memungkinkan untuk penyaringan sederhana (misalnya menonaktifkan semua non-kritis pemberitahuan).

  • Tersedia logger kerangka kerja yang memungkinkan anda untuk mengaktifkan atau menonaktifkan pesan dari sumber tertentu.

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

Mendapatkan Logger

Modul Guice yang digunakan selama inisialisasi plugin memiliki plugin-scoped logger. Ini memungkinkan anda untuk menganotasikan bidang, metode, atau konstruktor dengan @Inject untuk mendapatkan logger untuk plugin anda, yang sudah dikonfigurasi sebelumnya dengan ID plugin yang benar.

Catatan

Lihat Class Plugin utama untuk informasi dalam mengkonfigurasi ID plugin anda.

Example - Field

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

@Inject
private Logger logger;

Example - Method

private Logger logger;

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

Example - Constructor

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

private final Logger logger;

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

Dianjurkan untuk mengatur logger di plugin utama kelas, seperti yang diturunkan dengan Guice injector ketika plugin ini dimuat.

Menciptakan metode pengambil untuk anda logger di kelas yang sama di mana itu ditetapkan juga ideal, meskipun opsional. Contoh pengambil metode ini diilustrasikan di bawah ini.

public Logger getLogger() {
    return logger;
}

Memancarkan Pesan

Memancarkan pesan dengan anda logger adalah sangat sederhana.

Catatan

Contoh berikut mengasumsikan bahwa metode pengambil untuk logger Anda dinamai `` getLogger () ``, seperti yang ditunjukkan pada bagian sebelumnya. Ini mungkin berbeda untuk Anda tergantung pada apa yang Anda namakan metode pengambil Anda.

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

String pesan yang ingin anda keluarkan. Misalnya:

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