2012-08-12 12 views
7

Estoy haciendo una aplicación Java, que utilizará la interfaz de usuario swing. Le pedirá al usuario que especifique algunas configuraciones rellenando formularios y luego procesarlos y generar algunos archivos en el directorio ./output/.Salida de información de depuración en la consola

Durante el proceso de desarrollo, me gustaría dar salida a algunos datos técnicos en la consola, utilizando el método System.out.println().

¿Debo eliminar todas estas salidas de consola cuando termine el desarrollo?

En caso afirmativo, ¿cuál es la mejor manera de mostrar la información de depuración durante el proceso de desarrollo para eliminarla fácilmente antes de la producción?

Tal vez debería usar solo JUnit pruebas para depuración? Acabo de comenzar con esto, así que tengo una idea vaga de sus capacidades.

+2

[Log4J 2] (http://logging.apache.org/log4j/2.x/) está destinado a ayudarte en eso, muchas de sus características están empaquetadas, que puedes ver en ese enlace :-) –

+0

En algunos casos, el registro de Java puede ser mejor –

+0

@Siorus ¿Puedes explicarlo brevemente? ¿Y a qué te refieres con 'Java logging'? –

Respuesta

13

Si no va a utilizar un marco de depuración especializada que podría ser tan fácil como:

if (Debugger.isEnabled()) 
    Debugger.log("message here"); 

La clase depurador simplemente encapsula las llamadas println (como este):

public class Debugger{ 
    public static boolean isEnabled(){ 
     return true; 
    } 

    public static void log(Object o){ 
     System.out.println(o.toString()); 
    } 
} 

De esa forma, cuando quiera ir a producción, o puede modificar el comportamiento de su depuración (o deshabilitarlo) cambiando una línea en una clase.

+1

Gracias Probablemente, probaré mejor un marco de depuración, como usted mencionó. :) –

6

Una pequeña mejora a la clase depurador para hacer al cliente un poco más limpio:

public static void log(Object o){ 
    if(Debugger.isEnabled()) { 
     System.out.println(o.toString()); 
    }   
} 

A continuación, el cliente puede necesitar sólo una línea:

Debugger.log("....") 
+0

Esta no es una mejor solución en mi opinión. A menudo, las cadenas de mensajes de depuración necesitan formateo y esto lleva tiempo de CPU incluso cuando la depuración está deshabilitada. Verificar la depuración fuera de la llamada a 'log()' guarda eso (la rama se produce de todos modos). Alternativamente, puede tener un método 'log()' que envuelve el formato de cadenas. – Yuval

Cuestiones relacionadas