2010-06-17 16 views
6

Tengo una biblioteca bastante grande que desarrollé específicamente para usar en mi aplicación de Android. Sin embargo, la lógica de negocios en sí no tiene ninguna dependencia de Android. Para preservar eso, utilicé Commons Logging a través de esta biblioteca y sus respectivas pruebas JUnit (que ejecuto en Eclipse).No Commons ¿Iniciar sesión en Android?

Sin embargo, ahora que estoy empezando a integrarlo en una actividad que lanzo en Android, no puedo hacer que mi registro funcione. En Eclipse/JUnit, simplemente había extraído el archivo jar de log4j, así como un archivo log4j.properties. Esto no parece funcionar cuando se implementa en un dispositivo. Después de luchar con intentar hacer que funcione durante varias horas, me di por vencido y traté de reemplazar todas mis cosas comunes de registro con android.util.Log. Ahora puedo iniciar sesión en el dispositivo ... pero todas las pruebas JUnit están rotas. Cuando cualquier JUnit intenta iniciar sesión usando android.util.Log, arroja una RuntimeException 'Stub!'.

Preferiría volver a mi enfoque de registro de commons ... si alguien puede ayudar con eso ... de lo contrario ... ¿qué puedo hacer para ejecutar mis casos de prueba JUnit usando 'android.util.Log'?

Muchas gracias de antemano ... He dedicado más de unas pocas horas a esto y me gustaría pasar a escribir el código real otra vez!

Respuesta

4

No creo que exista un puerto log4j para Android atm. Sin embargo, Android tiene incorporado java.util.logging y el registro de commons se puede conectar a través del Jdk14Logger. Si el registro de commons funciona en Android, entonces probablemente será bueno ir.

1

Puede construir una interfaz para su propio registrador que, dependiendo de la plataforma, instancia un delegado para el registro que es común en la plataforma. Mientras esté trabajando y depurando esto debería ser suficiente, más adelante en el código de producción en el dispositivo, simplemente puede insertar un registrador que no hace nada y ahorra todo el tiempo que necesita para saturar el phonelog.

5

Como menciona Qberticus, el registro de commons funcionará dentro de Android. Acabo de confirmar esto abandonando la biblioteca de registro de recursos comunes en un proyecto de Android y registrando mensajes en el nivel INFO. El registro de Commons se configurará por defecto en el marco de registro Jdk14, que luego pasará al subsistema de Registro de Android, con resultados visibles en logcat. La etiqueta se establece en la clase cuyo registro se utiliza: por ejemplo, utilizando el registro de LogFactory.getLog(Foo.class) tendrá la etiqueta "Foo".

1

La solución de Paul no funcionó para mí. Resultó en un conflicto en el momento de la compilación porque, como ocurre, el archivo de registro de commons ya está incluido en el SDK. Mi problema fue que no pude compilar contra eso.

Adición:

extensible.classpath=${sdk.dir}/tools/lib/commons-logging-1.1.1.jar 

a mis ant.properties hizo el truco.

Cuestiones relacionadas