2010-12-02 12 views
5

Estoy a punto de terminar mi aplicación de Android. Al final me he dado cuenta que he estado usando montón de declaraciones de registro, como:Estrategia de registro

Log.d(TAG, "Blah-blah"); 

La pregunta es: para la liberación de producción lo que debo hacer con ellos?

  1. declaraciones sólo tiene que entrar comentario/la raya
  2. hacer otra cosa más sofisticado? Como solía hacer con las propiedades de Log4J o tan

Por favor, comparta su experiencia.

Respuesta

0

que hacerlo de esta manera, por lo que el compilador eliminar todos los registros de depuración, si es falso:

if (Constant.DEBUG) Log.d(TAG, "mein gott, state is roflcopter"); 
+1

Este método no es realmente incorrecto, ni tampoco es una buena práctica si me preguntas, ya que aumenta tu código. –

+0

Se supone que el registro es lo más simple posible. Más tarde, alguien puede cambiar Log.d a Log.w, pero se olvide de cambiar Constant.DEBUG (o viceversa). – inazaruk

+0

Quizás tengas razón, todo debería ser lo más simple posible. Pero es mejor resolver el problema con un poco de complejidad que no hacer nada en absoluto. Esta es la mejor solución que he encontrado, ya que considero que la hinchazón es mínima. – pgsandstrom

4

Puede eliminar las instrucciones de registro en tiempo de compilación utilizando una herramienta de ofuscación. Vea here para más detalles.

+0

OK, voy a investigar opción. De todos modos, ¿hay alguna posibilidad, como propiedades en Log4J? – barmaley

+0

Por lo que sé, todos los mensajes se registran. Luego, el espectador del registro puede seleccionar qué mensajes aparecer. No puede deshabilitar los mensajes de depuración para entrar en el registro, simplemente editando una propiedad. – kgiannakakis

0

Depende. Si espera que la aplicación falle a menudo, incluya una de las bibliotecas de informes de fallos, por ejemplo, pero lo que decida hacer simplemente no lo libere con los métodos Log.d().

0

no he experimento en Android específicamente, pero que acababa de salir de los staements de registro en el código y vuelta fuera de registro en el archivo de propiedades log4j. Es posible que incluso desee dejar algunos registros activados para que su aplicación genere registros útiles en caso de un bloqueo.

Si le preocupa que la generación del extracto de registro sea demasiado intensiva en cuanto a cálculo (por ejemplo, al llamar a String en una gran colección), puede utilizar este patrón.

if (Log.isDebugEnabled()) { 
    Log.Debug(bigCollection.toString()); 
} 
1

He creado una biblioteca para este propósito específico. Se puede encontrar aquí - LumberJack. Puede instalarlo usando Jitpack y gradle (marque README.md).

Después de la instalación, que tendrá que cambiar todo el registro de llamadas para llamadas de leñador (por ejemplo. LumberJack.d() en lugar de Log.d() etc.)

Las etiquetas son opcionales y por defecto se ajusta a "leñador". Puede elegir configurar la etiqueta predeterminada usted mismo.

Puede cambiar el filtrado en cualquier momento con el método LumberJack.setLogLevel(). Para eliminar todos los registros, puede configurar el LogLevel en LogLevel.None.

LumberJack.setLogLevel(LogLevel.None); 

Por lo tanto, si solo desea eliminar todos los registros de spam de logcat, solo tendrá que establecer el filtro de nivel de registro.

Opcionalmente, puede optar por iniciar sesión en un archivo de texto en lugar de logcat con el mismo mecanismo de filtrado.

Cuestiones relacionadas