Registro y Depuración

Hay algunos frameworks de registro disponibles para usar en Java. El registro es preferible a la impresión en stdout o stderr con ``System.out.println() `` por varias razones:

  • Los mensajes registrados están etiquetados con un nombre de origen, por lo que es más fácil averiguar de dónde provienen los mensajes registrados.
  • Los mensajes logueados pueden ser filtrados según su nivel de importancia (por ejemplo, desactivar todas las notificaciones no críticas).
  • Los marcos registrados disponibles le permiten activar o desactivar los mensajes de ciertas fuentes.

Sponge usa org.slf4j.Logger, no java.util.logging.Logger.

Conseguir un Registro

El módulo Guice utilizado durante la inicialización de los complementos tiene un registrador con un complemento. Esto le permite anotar un campo, método o constructor con @Inject para obtener el registrador para su complemento, que está preconfigurado con el ID del complemento correcto.

Nota

Vea Clase de Plug-in Principal para información de cómo configurar el ID de tu plugin.

Ejemplo - Campo

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

@Inject
private Logger logger;

Ejemplo - Método

private Logger logger;

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

Ejemplo - Constructor

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

private Logger logger;

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

Es recomendable establecer su logger en su clase de plugin principal, ya que se instancia con el inyector de Guice cuando el plugin es cargado.

Creando un método getter para tu logger en la misma clase en la cual se estableció también ese ideal, aunque opcional. Un ejemplo de método getter es ilustrado a continuación.

public Logger getLogger() {
    return logger;
}

Emisión de mensajes

Emitir un mensaje con tu logger es muy simple.

Nota

El próximo ejemplo asume que el método getter para tu logger es llamado getLogger(), como se muestra en la sección anterior. Esto puede diferir para usted dependiendo en cual fue el nombre con el que llamó su método getter.

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

El String (cadena) es el mensaje que quieres emitir. Por ejemplo:

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