2011-01-26 10 views
10

Estoy usando GWT 2.1 java.util.logging emulation para registrar mensajes del lado del cliente. De acuerdo con el documento, se proporcionan dos formateadores (TextFormatter y HTMLFormatter) que son apropiados para el registro del lado del cliente.Configuración de registro de GWT

¿Alguien puede dar un ejemplo sobre cómo configurar un formateador y adjuntarlo a un controlador en GWT?

Gracias

Respuesta

9

Aquí es un simple ejemplo de cómo agregar un controlador de registro para el registrador de la raíz. El registrador usa HTMLLogFormatter y coloca el mensaje en un widget HTML.

también echar un vistazo a HasWidgetsLogHandler, que básicamente hace lo que el manejador en el ejemplo anterior hace.

+0

Gracias Hilbrand. ¿Sabes si es posible hacer la misma configuración usando propiedades en el archivo gwt.xml? –

+0

¿Quiere decir que cuando el registro está deshabilitado en su archivo gwt.xml, no se genera código de registro cuando compila gwt? –

+0

Me refiero a configurar el registro mediante propiedades en lugar de hacerlo programáticamente –

17

Consulte la documentación de GWT para iniciar sesión here. Realmente depende de dónde desee que aparezca su registro, pero si solo le interesa iniciar sesión en el modo Dev, solo necesitará SystemLogHandler y DevelopmentModeLogHandler. ConsoleLogHandler y FirebugLogHandler se utilizan para iniciar sesión en modo web en Chrome, Firebug y Firebug Lite. PopupLogHandler y HasWidgetsLogHandler agregan los mensajes de registro a algún tipo de elemento de UI. Todo lo anterior debe poder habilitarse/deshabilitarse en .gwt.xml, excepto HasWidgetsLogHandler, que requiere un contenedor de widgets asociado. Esto debería ser posible añadiendo la siguiente:

<inherits name="com.google.gwt.logging.Logging"/> 
<set-property name="gwt.logging.logLevel" value="SEVERE"/> # To change the default logLevel 
<set-property name="gwt.logging.enabled" value="FALSE"/> # To disable logging 
<set-property name="gwt.logging.consoleHandler" value="DISABLED"/> # To disable a default Handler 
<set-property name="gwt.logging.developmentModeHandler" value="DISABLED" /> 
<set-property name="gwt.logging.popupHandler" value="DISABLED" /> 
<set-property name="gwt.logging.systemHandler" value="DISABLED" /> 
<set-property name="gwt.logging.firebugHandler" value="DISABLED" /> 
<set-property name="gwt.logging.simpleRemoteHandler" value="ENABLED" /> 
etc... 
+0

No ha respondido o no ha respondido a la pregunta en absoluto, pero copia pegada del doco oficial para la configuración básica que cualquiera puede encontrar. –

+1

Es importante tener en cuenta que los cambios en estas propiedades requieren reiniciar el Modo SuperDev. –

+0

No estoy de acuerdo, @mP. Esto aborda la pregunta, y copiar/pegar contenido de la documentación oficial es mucho mejor que proporcionar una respuesta de solo enlace. –

4

Estas son las dos clases que terminé usando:

import java.util.Date; 
import java.util.logging.LogRecord; 

import com.google.gwt.logging.impl.FormatterImpl; 

public class LogFormatter extends FormatterImpl { 

private static final StringBuilder sb = new StringBuilder(); 

@Override 
public String format(LogRecord rec) { 
    synchronized (sb) { 
     sb.setLength(0); 
     sb.append(new Date(rec.getMillis()).toString()); 
     sb.append(": "); 
     sb.append(rec.getMessage()); 
     sb.append("\n"); 
     return sb.toString(); 
    } 
} 

}

import java.util.logging.Handler; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

public class ALog { 
/* IMPORTANT: User blank string (root logger) here or else it WILL NOT have the formatter being used */ 
private static final Logger logger = Logger.getLogger(""); 

static { 
    for (Handler handler : logger.getHandlers()) { 
     handler.setFormatter(new LogFormatter()); 
     handler.setLevel(Level.ALL); 
    } 
} 

public static void log(String msg) { 
    logger.log(Level.INFO, msg); 
} 

public static void log(String msg, Throwable e) { 
    logger.log(Level.INFO, msg, e); 
} 
} 
Cuestiones relacionadas