ロギングラッパーについて考えてみる
備考)
ココらへんの対応をした時 release.apkを作る=>logcatに表示されない状態になる。
ただ昔のrelease.apkを評価したい という話がたまに出るので
下記のようなshellを作っておくかないと確認が難しくなる
- apk_log_disp.sh
# ソース上のタグ ARRAY=(main sub comm) if [ $1 -eq '-h' ]; then echo "=== usage: ===" echo " ./apk_log_disp.sh" echo " ./apk_log_disp.sh 12345678" exit 0 fi if [ $# -eq 1 ]; then echo " === $1 start ===" for item in ${ARRAY[@]} do echo " === $1 $item start ===" adb -s $1 shell setprop log.tag.$item VERBOSE echo " === $1 $item end ===" done echo " === $1 end ===" exit 0 fi for SERIAL in `adb devices | sed -e "s/List of devices attached//" | sed -e "s/device//"` do echo " === $SERIAL start ===" for item in ${ARRAY[@]} do echo " === $SERIAL $item start ===" adb -s $SERIAL shell setprop log.tag.$item VERBOSE echo " === $SERIAL $item end ===" done echo " === $SERIAL end ===" done exit 0
備考)
つい最近 slf4j-android を使い始めたのですが
この場合 上記のコードだと release.apkのLogをONにできない
で、slf4j-androidを素で使う場合は下記のような対応をしておくとベター
- main.java
private static final String TAG = main.class.getSimpleName(); private static final Logger logger = LoggerFactory.getLogger(TAG);//main.class);
ちなみに
とlogcat上のフィルタ書けられるのつい最近知りました(汗
tag:sub(クラス名)
不勉強過ぎますね。。。
kojiokbさんが興味深いTwをしたのでメモっておく
@sakura_bird1 BuildConfig.Debugの件です。 URL
2012-09-02 14:21:28 via web to @sakura_bird1
@kojiokb ありがとうございます!
2012-09-02 14:25:06 via web to @kojiokb
@sakura_bird1 デバッグビルド時のみログを出力する件です。 URL
2012-09-02 14:40:24 via web to @sakura_bird1
- kojiokbさんのgistコード
なるほどなーと思うんだけど
実際はリリース時点でのapkを保持しておいて、後で障害があった時に確認したい
という事がよくあるんですよね。
で自分が作って使っているラッパークラスをさらしてみる。
なんか会社でtrace関数を多用するコードが多くて、traceだけちゃんと出てればみたいな感じに・・(苦笑。
通常はinfo以上がロギングされるはず
(タグの抽出の奴は以前どなたかがTwで流していただいた物を流用)
ログを除くコードを書かれている人がよく多いんだけど
実際の所どうなんだろう??
たしか新しいADTだと
- BuildConfig.DEBUGは
- debug build時に自動ON
- release build時に自動OFF
になる認識だから問題ないと思うんですね。。
追記)
の話しでした。ADT20からの変更のよう