2011-02-02 7 views
5

Estoy usando log4javascript para registrar y rastrear los problemas en mi código JavaScript. He visto ayudas de registro similares anteriormente, pero estoy teniendo dificultades para comprender cómo cada uno de estos niveles de registro debe usarse para ser más útil y productivo.¿Cómo usar el mecanismo de registro de manera eficiente?

La mayoría de las veces termino el registro de depuración, información o rastreo sin ser realmente consciente de cuán productivo es cada uno de ellos o no. A medida que el código se hace cada vez más grande, se vuelve difícil y siento que los registros son más problemas que ayuda.

¿Puede alguien darme algunas pautas/ayuda para que pueda usar bien el mecanismo de registro?

Los siguientes son los diferentes niveles de registro soportados por el log4javascript:

  1. log4javascript.Level.ALL
  2. log4javascript.Level.TRACE
  3. log4javascript.Level.DEBUG
  4. log4javascript.Level.INFO
  5. log4javascript.Level.WARN
  6. log4javascript.Level.ERROR
  7. log4javascript.Level.FATAL

Respuesta

15

yo soy el autor de log4javascript y lo uso todos los días en mi trabajo. Así es como yo lo uso:

  • que tienden a utilizar debug() y trace() con mayor frecuencia. Uso trace() para registrar operaciones de bajo nivel cuando trato de buscar un error y debug() para un registro más general del flujo de programa. Tengo el umbral de la consola configurado en DEBUG para la codificación habitual, de modo que no tengo mensajes de seguimiento que llenan el registro y luego lo cambio a ALL cuando necesito ver los mensajes de seguimiento.
  • Uso info() bastante, por lo general para hacer que los mensajes particulares se destaquen un poco en la consola de registro.
  • Uso liberalmente el group() (vea http://log4javascript.org/docs/manual.html#loggers) para agrupar el registro para una operación en particular y me permite expandir y colapsar trozos de registro. Los grupos también pueden estar anidados.
  • Guardo mi código de inicialización de registro en un solo lugar y le doy a cada componente de mi aplicación un registrador separado (que hereda del registrador de raíz). Esto me permite establecer umbrales de registro para componentes particulares.

Por ejemplo:

var component1 = (function() { 
    var log = log4javascript.getLogger("MyApp.Components.Component1"); 

    // Implementation stuff 
})(); 

var component2 = (function() { 
    var log = log4javascript.getLogger("MyApp.Components.Component2"); 

    // Implementation stuff 
})(); 

En el código de registro de inicialización:

// Create a console appender that is inherited by all loggers 
var appender = new log4javascript.PopUpAppender(); 
appender.setThreshold(log4javascript.Level.DEBUG); 

// Limit the number of messages displayed in the console at any one time 
appender.setMaxMessages(2000); 

log4javascript.getRootLogger().addAppender(appender); 

// Disable all logging except ERROR and FATAL for the "MyApp.Components" 
// logger and all its descendants (including "MyApp.Components.Component1" and 
// "MyApp.Components.Component2") 
log4javascript.getLogger("MyApp.Components").setLevel(log4javascript.Level.ERROR); 

Esta materia es común a todos los marcos de registro log4x, por lo que se aplicará a partir de la documentación log4j o log4net. Por ejemplo, el log4j short manual viejo pero aún relevante puede ayudar.

+0

¡Guau! gracias Tim Muy buena y completa respuesta. –

+0

tiene algún consejo sobre el rendimiento? Me di cuenta de que el manual sugiere declaraciones circundantes con if (isXXXEnabled), ¿eso sigue siendo válido? –

+0

@omouse: 'if (isXXXEnabled)' sigue siendo válido, sí.Si está utilizando un 'PopUpAppender' o' InPageAppender', entonces la limitación de la cantidad de mensajes de registro que almacena utilizando el appender 'setMaxMessages()' puede ayudar. –

Cuestiones relacionadas