2010-12-02 6 views
5

Je suis sur le point de terminer mon application Android. En fin de compte, j'ai trouvé que je me sers de tas de déclarations d'exploitation forestière, comme:Stratégie de connexion

Log.d(TAG, "Blah-blah"); 

La question est: pour la libération de la production que dois-je faire avec eux?

  1. relevés journal Juste un commentaire/bande
  2. faire autre chose plus sophistiqué? Comme je l'habitude de faire avec les propriétés Log4J ou alors

S'il vous plaît partagez votre expérience.

Répondre

0

Je fais comme ça, ce qui rend le compilateur supprimer toute exploitation forestière si DEBUG est faux:

if (Constant.DEBUG) Log.d(TAG, "mein gott, state is roflcopter"); 
+1

Cette méthode n'est pas vraiment mal ni c'est une bonne pratique si vous me demandez comme il gonfle votre code. –

+0

La journalisation est censée être aussi simple que possible. Plus tard quelqu'un peut changer Log.d en Log.w, mais oublier de changer Constant.DEBUG (ou vice versa). – inazaruk

+0

Vous pouvez avoir un point, tout devrait être aussi simple que possible. Mais il est préférable de résoudre le problème avec un peu de complexité puis de ne rien faire du tout. C'est la meilleure solution que j'ai trouvée, car je trouve que la météorisation est minime. – pgsandstrom

4

Vous pouvez supprimer les instructions de journalisation lors de la génération à l'aide d'un outil d'obfuscation. Voir here pour plus de détails.

+0

OK, je vais étudier l'option. De toute façon, y a-t-il des possibilités comme des propriétés dans Log4J? – barmaley

+0

D'après ce que je sais, tous les messages sont enregistrés. Ensuite, l'utilisateur du journal peut sélectionner les messages à afficher. Vous ne pouvez pas désactiver les messages de débogage pour qu'ils apparaissent dans le journal en modifiant simplement une propriété. – kgiannakakis

0

Dépend. Si vous vous attendez à ce que l'application se plante souvent, incluez par exemple l'une des bibliothèques de rapports de plantage, mais quoi que vous décidiez de faire, ne la relâchez pas avec les méthodes Log.d().

0

Je n'accusons pas sur Android spécifiquement, mais je venais de quitter les staements d'exploitation forestière dans le code et tour désactiver la journalisation dans le fichier de propriétés log4j. Vous pourriez même vouloir laisser la journalisation activée pour que votre application génère des journaux utiles en cas de panne. Si vous craignez que la génération d'instruction de journal ne soit trop intensive (par exemple en appelant toString sur une grande collection), vous pouvez utiliser ce modèle.

if (Log.isDebugEnabled()) { 
    Log.Debug(bigCollection.toString()); 
} 
1

Il existe un nouveau projet, qui permet log4j sur android. Utiliser lo4gj sur slf4j est possible. Il fournit également un appender pour LogCat. Voir le projet android-logging-log4j ou log4j support in android

+0

Woo-hoo! Log4J est là! Merci beaucoup! – barmaley

1

J'ai créé une bibliothèque dans ce but spécifique. Il peut être trouvé ici - LumberJack. Vous pouvez l'installer en utilisant Jitpack et Gradle (Veuillez vérifier README.md).

Après l'installation, vous devrez changer tous Consigner les appels Lumberjack appels (par exemple. LumberJack.d() au lieu de Log.d() etc.)

Les balises sont optionnelles et par défaut réglé sur « Lumberjack ». Vous pouvez choisir de définir l'étiquette par défaut vous-même.

Vous pouvez modifier le filtrage à tout moment en utilisant la méthode LumberJack.setLogLevel(). Pour supprimer tous les journaux, vous pouvez simplement définir le LogLevel sur LogLevel.None. Par conséquent, si vous souhaitez simplement supprimer tous les journaux de spam de logcat, il vous suffira de définir le filtre de niveau de journalisation.

En option, vous pouvez choisir de vous connecter à un fichier texte au lieu de logcat avec le même mécanisme de filtrage.

0

Si vous ne voulez pas enregistrer quelque chose dans la version d'Android, vous pouvez utiliser BuildConfig généré automatiquement.Voir plus à ce sujet ici: https://developer.android.com/studio/build/gradle-tips.html. Vous pouvez également lire plus d'informations dans cette question: BuildConfig file in android - Purpose and Possibilities.

Donc, dans votre code que vous écrivez simplement quelque chose comme ceci:

if (BuildConfig.DEBUG) { 
    //your code just for development goes here 
}