2010-06-17 15 views
6

J'ai une assez grande bibliothèque que j'ai développée spécifiquement pour une utilisation dans mon application Android. Cependant la logique métier elle-même n'a aucune dépendance sur Android. Pour préserver cela, j'ai utilisé Commons Logging dans cette bibliothèque et c'est JUnit tests respectifs (que je cours dans Eclipse).No Commons Connexion à Android?

Cependant, maintenant que je commence à l'intégrer dans une activité que je lance sur Android, je n'arrive pas à faire fonctionner ma journalisation. Dans Eclipse/JUnit, j'avais simplement extrait le fichier jar de log4j ainsi qu'un fichier log4j.properties. Cela ne semble pas fonctionner lors du déploiement sur un périphérique. Après avoir lutté pour essayer de faire fonctionner cela pendant plusieurs heures, j'ai abandonné et j'ai essayé de remplacer tous mes trucs de journalisation avec android.util.Log. Maintenant, je peux me connecter sur l'appareil .. mais tous les tests JUnit sont cassés. Quand n'importe quel JUnit essaye de se connecter en utilisant android.util.Log, il lance une 'RuntimeException' Stub! '. Je préférerais revenir à mon approche de journalisation des communs .. si quelqu'un peut aider avec cela .. sinon .. que puis-je faire pour obtenir mes cas de test JUnit en cours d'exécution en utilisant 'android.util.Log'? Merci beaucoup à l'avance .. J'ai passé plus de quelques heures sur ce sujet et j'aimerais passer à l'écriture de code réel à nouveau!

Répondre

4

Je ne crois pas qu'il existe un port log4j pour android atm. Cependant, Android a java.util.logging intégré et la journalisation des communs peut se connecter à cela via le Jdk14Logger. Si la journalisation des communs fonctionne sur Android, alors vous serez probablement prêt à partir.

1

Vous pouvez créer une interface pour votre propre enregistreur qui, en fonction de la plate-forme, instancie un délégué sur la journalisation commune à la plate-forme. Tant que vous travaillez et déboguez cela devrait suffire, plus tard dans le code de production sur l'appareil, vous pouvez simplement insérer un enregistreur qui ne fait rien et vous économisez tout le temps dont vous avez besoin pour encombrer le phonelog.

5

Comme le mentionne Qberticus, la consignation des journaux fonctionnera au sein d'Android. Je viens de le confirmer en déposant la bibliothèque de journalisation commune dans un projet Android et en enregistrant les messages au niveau INFO. Commons-logging utilisera par défaut l'infrastructure de journalisation Jdk14, qui sera ensuite transmise au sous-système de journalisation Android, avec des résultats visibles dans logcat. La balise est définie sur la classe dont le journal est utilisé: par exemple, l'utilisation du journal LogFactory.getLog(Foo.class) aura le tag "Foo".

1

La solution de Paul n'a pas fonctionné pour moi. Il en a résulté un conflit au moment de la compilation car, en l'occurrence, le fichier journal d'enregistrement des communs est déjà inclus dans le SDK. Mon problème était que je ne pouvais pas compiler contre cela.

Ajout:

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

à mes ant.properties fait l'affaire.