Journalisation (Logging) et Débogage

Il existe quelques frameworks de journalisation disponibles pour Java. La journalisation est préférable à l’écriture sur la sortie standard (stdout) et la sortie d’erreur (stderr) avec System.out.println() pour un bon nombre de raisons:

  • Les messages logués (enregistrés) sont classés par nom de source. Cela rend plus facile à comprendre d’où ils proviennent.
  • Les messages logués ont un niveau de sévérité qui permet un filtrage simple (ex: masquer toutes les entrées sans importance).
  • Le frameworks de log disponible vous permet d’activer ou désactiver les message de certaines sources.

Sponge utilise org.slf4j.Logger, et non pas java.util.logging.Logger.

Obtenir un Logger

Le module Guice utilisé lors de l’initialisation des plugins a un Logger au champ d’action limité à votre plugin. Cela vous permet d’annoter un champ, une méthode ou un constructeur avec @Inject pour obtenir le « Logger » de votre plugin, qui est pré-configuré avec le bon ID de plugin.

Note

Voir Classe Principale du Plugin pour des informations sur la configuration de votre plugin ID.

Exemple - Field

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

@Inject
private Logger logger;

Exemple - Méthode

private Logger logger;

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

Exemple - Constructeur

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

private Logger logger;

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

Il est recommandé de définir votre Logger dans la classe principale de votre plugin, pour qu’elle soit instanciée avec l’injecteur Guice lorsque le plugin se lance.

Créer une méthode « Get » (voir Getter and Setter) pour votre Logger dans la même classe que celle où il a été défini serait l’idéal, bien que facultatif. Un exemple d’une méthode d’accesseur « Get » est illustré ci-dessous.

public Logger getLogger() {
    return logger;
}

Émition de Messages

Envoyer un message avec votre Logger est vraiment très simple.

Note

L’exemple suivant suppose que la méthode d’accesseur pour votre Logger est nommée “”getLogger()”“, comme indiqué dans la section précédente. Cela peut différer pour vous selon ce que vous voulez retourner avec cet accesseur.

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

Cette String (chaîne de caractères) est le message que vous voulez envoyer. Par exemple:

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