Java: Comment utiliser deux systèmes de journalisation différents en fonction de l'environnement en cours d'exécution


J'ai développé une application/bibliothèque qui utilise la bibliothèque apache log4j. Maintenant je veux utiliser la bibliothèque dans une application Android, où l'habitude log4j bibliothèque ne fonctionne pas.

Maintenant, je sais qu'il existe des bibliothèques lis slf4j o log4j pour Android, mais mon idée est d'utiliser la bibliothèque log4j disponible (puis lorsque la bibliothèque s'exécute sur un ordinateur) et d'utiliser les fonctionnalités de journalisation Android lorsqu'elle s'exécute sur des appareils Android.

Est-il possible de le faire? Je pense que la solution devrait être d'implémenter une classe Logger interne qui sélectionne le système de journalisation disponible.

  • Est-ce une bonne idée?
  • Ou est-il préférable de choisir un seul système de journalisation?
  • Ou peut-être est-il préférable que la classe logger interne soit implémentée en deux versions distinctes, la première pour real pc et la seconde pour Android.

Et aussi:

  • comment puis-je détecter l'environnement en cours d'exécution? (Est-il sur Android ou sur un ordinateur? est-il suffisant pour détecter si je suis sur un DalvikVM ou un JavaVM? Est-il possible?

Toute aide/suggestion est appréciée.

Author: Ivan, 2012-01-26

1 answers

Vous pouvez utiliser la journalisation Java. Il est également disponible sur android API . Cette api sur Android semble que les délégués sur Android.util.Journal.

Notez que par défaut, seuls les messages INFO et up sont imprimés sur logcat. Dans le cas où vous voulez voir des leves de journal inférieurs, vous pouvez setprop sur l'appareil (plus d'infos):

adb -e shell setprop log.name DEBUG

Et n'oubliez pas de définir le niveau de log java sur votre bibliothèque:

Logger.setLevel (java.util.logging.Level.FINER);

J'espère que cette aide

 1
Author: Fede, 2012-04-11 12:25:19