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 traduitc*.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
etcom.example.anotherapp.MyClass
à la fois traduirec*.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.