読者です 読者をやめる 読者になる 読者になる

ロギングラッパーについて考えてみる

備考)
ココらへんの対応をした時 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を素で使う場合は下記のような対応をしておくとベター

private static final String TAG = main.class.getSimpleName();
private static final Logger logger = LoggerFactory.getLogger(TAG);//main.class);

ちなみに


tag:sub(クラス名)
とlogcat上のフィルタ書けられるのつい最近知りました(汗
不勉強過ぎますね。。。


 kojiokbさんが興味深いTwをしたのでメモっておく

  • kojiokbさんのgistコード



 なるほどなーと思うんだけど
実際はリリース時点でのapkを保持しておいて、後で障害があった時に確認したい
という事がよくあるんですよね。

 で自分が作って使っているラッパークラスをさらしてみる。

なんか会社でtrace関数を多用するコードが多くて、traceだけちゃんと出てればみたいな感じに・・(苦笑。
通常はinfo以上がロギングされるはず
(タグの抽出の奴は以前どなたかがTwで流していただいた物を流用)

 ログを除くコードを書かれている人がよく多いんだけど
実際の所どうなんだろう??

 たしか新しいADTだと

  • BuildConfig.DEBUGは
    • debug build時に自動ON
    • release build時に自動OFF

になる認識だから問題ないと思うんですね。。

追記)

の話しでした。ADT20からの変更のよう