Logging and Debugging

Det er noen få logging frameworks tilgjengelig for bruk i Java. Logging er foretrukket for å printe til stdout eller stderr med System.out.println() for en rekke årsaker:

  • Loggførte meldinger er merket med et kildenavn som gjør det enklere å finne ut hvor de loggførte meldingene kommer fra.

  • Loggførte meldinger har en alvorlighetsgrad som tillater enkel filtrering (f.eks.alle ukritiske merknader).

  • De tilgjengelige loggføringsrammeverkene lar deg aktivere eller deaktivere meldinger fra spesifikke kilder.

Sponge bruker org.slf4j.Logger, ikke java.util.logging.Logger.

Å få en loggfører

Guicemodulen brukt under initalisering av plugins har en pluginglobal logger. Dette tillater deg å kommentere et felt, metode eller en såkalt constructor med @Inject for å hente loggeren for din plugin, som er forhåndskonfigurert med korrekt plugin-ID.

Obs

See Main Plugin Class for information on configuring your plugin ID.

Eksempel - Felt/field

import com.google.inject.Inject;
import org.slf4j.Logger;

@Inject
private Logger logger;

Eksempel - Metode

private Logger logger;

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

Eksempel - Constructor

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

private Logger logger;

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

Det er anbefalt å sette din såkalte logger i hovedklassen i pluginen din, da det startes med Guice-injektoren når pluginen er lastet.

Det er ideelt å opprette en gettermetode for din logger i samme klasse som den ble satt, selv om det er valgfritt. Et eksempel på gettermetode er illustrert nedenfor.

public Logger getLogger() {
    return logger;
}

Å sende ut meldinger

Å sende ut en melding med din logger er veldig enkelt.

Obs

Følgende eksempler forutsetter at gettermetoden for loggeren din er kalt getLogger(), som vist i forrige seksjon. Dette kan variere for deg avhengig av hva du kalte gettermetoden din.

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

Strengen er meldingen du ønsker å sende. For eksempel:

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