Ma question semble être facile à répondre, mais il existe plusieurs bonnes solutions. J'aime choisir le "meilleur".
logger.debug("Some log message. Details: {}", someObject.toString());
est un bon et efficace moyen d'ignorer les concaténations de chaînes si l'enregistreur est éteint; liaison d'enregistreur légère qui délègue à Android.util.Log
.com.example.myapp.MyClass
tag traduit en c*.e*.m*.MyClass
), ce qui peut entraîner la même balise de journal pour différentes classes (par exemple, com.example.app.MyClass
et com.example.anotherapp.MyClass
les deux se traduisent en c*.e*.a*.MyClass
); Aucun système intégré de rapport de crash.En plus de cela, j'aime le comportement d'Androlog, mais je suis un Java dev, familier avec log4j/slf4j. Nous aurons certainement besoin d'un système de rapport de plantage, mais il existe plusieurs cadres pour le rapport de plantage (à côté de de Android rapport de plantage par défaut).
Je peux combiner certains d'entre eux, par exemple utiliser Log4J Android, mais créer un appender pour utiliser le framework androlog, mais tôt ou tard ce sera un gâchis, qui devrait être évité.
Merci pour vos suggestions, j'espère que les résultats aideront à en décider d'autres à l'avenir.
Edit: Comme mentionné ci-dessous, je peux combiner par exemple: log4j-Android avec slf4j (ce que je préfère faire si j'utilise log4j, car le formatage du journal prend en charge ("{}", ...)), mais il le fait ne répond pas à la question. Je dois choisir un cadre, puis je peux le décorer avec la façade SLF4J.
La meilleure façon. Je pense que c'est d'utiliser l'API SLF4J + une partie de son implémentation.
Pour les applications Android Android, vous pouvez utiliser les éléments suivants:
Veuillez cocher this première réponse
Ça dit:
SLF4J est essentiellement une couche d'abstraction. Ce n'est pas une implémentation de journalisation. Cela signifie que si vous écrivez une bibliothèque et que vous utilisez SLF4J, vous pouvez donner cette bibliothèque à quelqu'un d'autre à utiliser et ils peuvent choisir l'implémentation de journalisation à utiliser avec SLF4J, par exemple. log4j ou l'API de journalisation Java Java. Elle empêche les projets de dépendre de nombreuses API de journalisation simplement parce qu'elles utilisent des bibliothèques qui en dépendent.
Donc, pour résumer: SLF4J ne remplace pas log4j, ils fonctionnent ensemble. Il supprime la dépendance à log4j de votre bibliothèque/application.
J'ai essayé original slf4j.org-Android mais malheureusement ce pot n'a pas pu obtenir de messages de débogage/verbeux à enregistrer car il utilise en interne LOG.isDebugEnabled () pour la sortie de débogage qui semble toujours être fausse .
actuellement j'utilise l'alternative lp0-slf4j-Android implémentation qui utilise un fichier de propriétés avec les paramètres de journalisation où je peux également obtenir des messages de débogage/verbeux si activé.