リリース時に Log.i/e/d 呼び出しを無効にする方法について多くの質問と回答を見た後、答えはさまざまで、proguard を使用するか、bool 値をチェックするログ ラッパーを使用します。私は実際にかなり長い間ログラッパーを使用していましたが、ログが最後に表示されなくても、いくつかの回答で StringBuilder のインスタンスが作成されていることに気付きました。
だから、私は次のアプローチを試みています:
public class Logger {
static final boolean LOG = true;
public static void printString(String string) {
if (Logger.LOG) {
Log.i("MyApp", string);
}
}
public static void printStrings(String string1, String string2) {
if (Logger.LOG) {
Log.i("MyApp", string1 + " " + string2);
}
}
public static void printObject(Object object) {
if (Logger.LOG) {
Log.i("MyApp", object.toString());
}
}
public static void printException(Exception exception) {
if (Logger.LOG) {
Log.i("MyApp", exception.getLocalizedMessage());
}
}
}
だから私の質問は、この実装には `StringBuilder の問題がありますか? ログに記録するものの数に制限があることを認識していますが、拡張できます。私の主な範囲は、アプリ全体でログ メッセージを簡単に無効にしたり、それらをより細かく制御したりできるようにすることです。