Logging en Debugging
Er zijn enkele logging frameworks beschikbaar voor gebruik in Java. Logging heeft de voorkeur tegenover tekst printen naar stdout of stderr met System.out.println()
voor een aantal redenen:
Gelogde berichtten zijn gelabeld met een bronnaam zodat het makkelijk is om uit te zoeken van waar de gelogde berichten komen.
Gelogde berichten hebben een niveau van belangrijkheid welke het toelaat om hierop te filteren (bv. schakel alle niet-kritieke berichten uit).
De beschikbare logging frameworks maken het mogelijk voor jou om berichten van bepaalde bronnen uit of aan te zetten.
Sponge uses org.apache.logging.log4j.Logger
, not java.util.logging.Logger
.
Het verkrijgen van een logger
De Guice module die gebruikt wordt tijdens de initialisatie van de plugins heeft een logger voor de plugins. Dit laat je toe om een veld, methode of constructor te annoteren met de @Inject annotatie
om zo de logger te krijgen voor jou plugin. Deze is voorgeconfigureerd met de correcte plugin ID.
Notitie
Bekijk Hoofdklasse uw plugin voor meer informatie over het configureren van uw plugin ID.
Voorbeeld - veld
import com.google.inject.Inject;
import org.apache.logging.log4j.Logger;
@Inject
private Logger logger;
Voorbeeld - functie
private Logger logger;
@Inject
private void setLogger(Logger logger) {
this.logger = logger;
}
Voorbeeld - Constructor
// For the purpose of this example, "Banana" is the class name
private final Logger logger;
@Inject
public Banana(Logger logger) {
this.logger = logger;
}
Het is aangeraden om je logger te definiëren in je main plugin klasse aangezien het geïnstantieerd wordt met de Guice injector wanneer de plugin geladen is.
Een getter methode voor je logger maken in dezelfde klasse als waar hij gedefinieerd was is ook ideaal maar optioneel. Een voorbeeld getter methode wordt hieronder geïllustreerd.
public Logger getLogger() {
return logger;
}
Uitzenden van berichten
Een bericht versturen met je logger is heel simpel.
Notitie
Het volgende voorbeeld veronderstelt dat de getter methode voor uw logger getLogger()
heet, zoals getoond in het vorige deel. Dit kan veranderen op basis van hoe u de getter methode heeft noemde.
getLogger().info("String");
getLogger().debug("String");
getLogger().warn("String");
getLogger().error("String");
De ‘string’ is het bericht dat je wenst te sturen. Bijvoorbeeld:
getLogger().warn("This is a warning!");