私はAndroidアプリケーションを終了しようとしています。最後に、私は、私は次のように、ログ文の束を使用してきたことを発見した:ロギング戦略
Log.d(TAG, "Blah-blah");
質問は次のとおりです。製品リリースのために、私は彼らと何をすべきでしょうか?
- だけコメント/ストライプログステートメントを
- より洗練された何か他のものですか? Log4Jのプロパティなどと同じように
あなたの経験を共有してください。
私はAndroidアプリケーションを終了しようとしています。最後に、私は、私は次のように、ログ文の束を使用してきたことを発見した:ロギング戦略
Log.d(TAG, "Blah-blah");
質問は次のとおりです。製品リリースのために、私は彼らと何をすべきでしょうか?
あなたの経験を共有してください。
私はDEBUGがfalseの場合、コンパイラは、すべてのログを削除すること、このようにそれを実行します。
if (Constant.DEBUG) Log.d(TAG, "mein gott, state is roflcopter");
難読化ツールを使用して、ビルド時にロギングステートメントを削除できます。詳細は、hereを参照してください。
OK、私は選択肢を調査しますが。とにかく、Log4Jのプロパティのような可能性はありますか? – barmaley
私が知っているところから、すべてのメッセージが記録されます。次に、ログの閲覧者がどのメッセージを表示するかを選択できます。プロパティを編集するだけで、デバッグメッセージをログに記録しないようにすることはできません。 – kgiannakakis
に依存します。アプリケーションが頻繁にクラッシュすると思われる場合は、たとえばクラッシュレポートライブラリの1つを含めますが、何をするかはLog.d()
の方法で解除してください。
私は特にAndroid上で経験していませんでしたが、私はちょうどコードと順番にログstaementsを残したいですlog4jプロパティー・ファイルのロギングをオフにします。クラッシュ時にアプリが有用なログを生成できるように、ログをオンにしたままにしておくこともできます。
ログステートメントの生成が計算量が多すぎる(たとえば、大きなコレクションでtoStringを呼び出すなど)ことが心配な場合は、このパターンを使用できます。
if (Log.isDebugEnabled()) {
Log.Debug(bigCollection.toString());
}
androidにlog4jを有効にする新しいプロジェクトがあります。 slf4j上でlo4gjを使用することは可能です。また、LogCat用のアペンダーも提供しています。プロジェクトを参照android-logging-log4jまたはlog4j support in android
Woo-hoo! Log4Jはこちらです!どうもありがとう! – barmaley
この特定の目的のためにライブラリを作成しました。それはここに見つけることができる - LumberJack。 Jitpackとgradle(README.md
を確認してください)を使用してインストールできます。
インストールしたら、あなたはログ(例えば。LumberJack.d()
代わりのLog.d()
など)を呼び出します木こりの呼び出しすべてを変更する必要がありますが
タグはオプションであり、デフォルトでは「木こり」に設定します。デフォルトのタグを自分で設定することもできます。
LumberJack.setLogLevel()
メソッドを使用して、いつでもフィルタリングを変更できます。すべてのログを削除するには、LogLevel
をLogLevel.None
に設定するだけです。
LumberJack.setLogLevel(LogLevel.None);
ログキャストスパミングログをすべて削除する場合は、ログレベルフィルタを設定するだけです。
オプションで、同じフィルタリングメカニズムを使用してlogcatの代わりにテキストファイルにログインすることもできます。
Androidリリースバージョンで何かを記録したくない場合は、自動的に生成されたBuildConfigを使用できます。その詳細はこちらhttps://developer.android.com/studio/build/gradle-tips.htmlをご覧ください。この質問の詳細については、BuildConfig file in android - Purpose and Possibilitiesを読むこともできます。
だからあなたのコードでは、単にこのような何か書く:
if (BuildConfig.DEBUG) {
//your code just for development goes here
}
このメソッドは実際には間違っているわけではありません。 –
ロギングはできるだけシンプルになっているはずです。後で誰かがLog.dをLog.wに変更するかもしれませんが、Constant.DEBUG(あるいはその逆)を変更することを忘れないでください。 – inazaruk
あなたはポイントがあるかもしれません、すべてはできるだけシンプルでなければなりません。しかし、少し複雑で問題を解決し、何もしないことが良いです。これは私が見つけた最良の解決策です。なぜなら、膨らみが最小限に抑えられているからです。 – pgsandstrom