53 votes

Qui Android de journalisation à utiliser?

Ma question semble être facilement responsable, mais il y a plusieurs bonnes solutions. J'aime choisir la 'meilleure' un.

La disposition des cadres (n'hésitez pas à suggérer plus):

Avantages/Inconvénients:

Androlog:

  • Pro: Similaire à Android de journalisation, il y a donc seulement de petits changements dans le code existant; en Mesure d'envoyer des rapports d'incident avec plus de détails dans le rapport d'erreurs (les journaux autour de l'exception); Nice, journaux
  • Con: Pas de standard de java "getLogger" approche; configuration de Production réalisable en téléchargeant un fichier de propriétés pour carte sd, j'ai besoin d'appeler init journalisation manuellement; la Nécessité de créer LOG_TAG comme des constantes, ou de le modifier pour créer le journal de la balise constantes par Aspect pour atteindre la norme de comportement: les tags sont les noms de classe; Lorsque la journalisation est une exigence de l'entreprise, nous avons besoin de le tester. Les essais statiques appels sur Android presque impossible; Enregistreur ne peut pas être injecté par cadre

Log4J-Android:

  • Pro: de manière Standard pour se connecter en Java, Compatible avec SLF4J; Capable d'analyser les fichiers de propriété;
  • Con: Pas intégré dans le rapport de crash du système; me Semble: ce n'est pas couramment utilisé, il pourrait être dangereux de l'utiliser;

SLF4J-Android:

  • Pro: Semble être élaboré en plus de gens comme Log4J-Android; L' logger.debug("Some log message. Details: {}", someObject.toString()); est un bon, et efficace pour sauter des concaténations de chaîne si l'enregistreur est éteint; léger enregistreur de liaison que les délégués à l' android.util.Log.
  • Con: Auto journal généré des balises <= 23 caractères de long en raison d'une limitation de la longueur de journal de tags sur la plate-forme Android (par exemple, com.example.myapp.MyClass balise traduit c*.e*.m*.MyClass), ce qui peut entraîner dans le même journal de balise pour les différentes catégories (par exemple, com.example.app.MyClass et com.example.anotherapp.MyClass à la fois traduire c*.e*.a*.MyClass); Pas construit dans le crash système de reporting.

En plus de ces, j'aime Androlog comportement, mais je suis un dev Java, familier avec log4j/slf4j. Nous aurons sans doute besoin de rapport de crash du système, mais il existe plusieurs cadres de rapport d'incident (à côté d'android par défaut de rapport de crash).

Je peux combiner certains d'entre eux, par exemple, utiliser Log4J android, mais créer un appender d'utiliser le androlog cadre, mais tôt ou tard, il sera un gâchis, qui devrait être évité.

Merci pour vos suggestions, j'espère que les résultats vont aider à décider autres dans le futur.

Edit: Comme mentionné ci-dessous, je peux combiner pour ex: log4j-android avec slf4j (auquel je préfère le faire si je vais utiliser log4j, car le journal de prise en charge du formatage ("{}",...) ), mais il ne répond à la question. - Je choisir un cadre, alors je peux le décorer avec l'SLF4J façade.

12voto

stefan.nsk Points 390

La meilleure façon de faire. Je pense, est d'utiliser SLF4J + API certains de sa mise en œuvre.

Pour les applications Android, vous pouvez utiliser les éléments suivants:

  1. Android Enregistreur est léger et facile à configurer SLF4J de mise en œuvre (< 50 Ko).
  2. LOGBack est le plus puissant et optimisé mise en œuvre, mais sa taille est d'environ 1 Mo.
  3. Tout autre à votre goût: slf4jandroid, slf4j-android.

6voto

silwar Points 1634

Veuillez vérifier cette première réponse

Il dit:

SLF4J est fondamentalement une couche d'abstraction. Il n'est pas un enregistrement la mise en œuvre. Cela signifie que si vous êtes en train de rédiger une bibliothèque et que vous utilisez SLF4J, vous pouvez donner à cette bibliothèque à quelqu'un d'autre et ils peuvent choisir la journalisation de l'application à utiliser avec SLF4J par exemple, log4j ou la Java API de journalisation. Il aide à prévenir les projets d'être dépendant sur beaucoup de journalisation de l'Api juste parce qu'ils utilisent des bibliothèques qui sont à leur charge.

Donc, pour résumer: SLF4J ne remplace pas log4j, ils travaillent ensemble. Il supprime la dépendance sur log4j à partir de votre bibliothèque/application.

2voto

k3b Points 5381

J'ai essayé d'origine slf4j.org-android , mais malheureusement, ce pot n'a pas été en mesure d'obtenir debug/verbose messages pour être enregistré, car il utilise en interne le JOURNAL.isDebugEnabled() pour la sortie de débogage qui semble toujours être faux.

actuellement, je utiliser l'alternative lp0-slf4j-android application qui utilise l'une des propriétés de fichier avec les paramètres de connexion où je peux aussi obtenir debug/verbose messages si l'option est activée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X