Hatena::ブログ(Diary)

aremokoremo

2012-01-27

android ビルドログ生成スクリプト

概要

"Androidビルドした際のビルドログ" をファイルアウトするスクリプト
"makelogger" を作成した。

"makelogger" は、makeコマンドのWrapperです。

"makelogger"という今回作成したスクリプトを実行すると

  • make実行
  • ログファイル出力 (log_YYYYMMDD_HHMMSS.txt)

が行われます

背景

AndroidのMakeをする際、ログファイルが出力されないので困る

$ make
#ログは、ターミナルに出力されるだけ

以下のようにすれば、ログ "log.txt" は出るが、ビルド毎にログファイル名を変えないと、古いログが上書きされて困る


$ make >& log.txt
#log.txtが生成される
# "&"を付けるのは、標準出力と標準エラー出力を両方ファイルに出力するため(ビルドログは両方が出力される)

$ make >& log.txt
#log.txtが上書きされる


でも、毎回ログファイル名を考えるのも入力するのもダルい、、
なので、ファイル名が自動的に付くとうれしい。ビルド開始時の日時が付くとうれしいかな。

んで、以下みたいにすれば、ファイル名に日時は自動に付くが、

$ make >& log_`date +%Y%m%d_%H%M%S`.txt

むしろ、%だのなんだのをいちいち書くほうがダルいので、
これをシェルスクリプトにしてしまえばいいなと考えました

環境

やったこと

"makelogger" スクリプト作成 (スクリプト内容は後述)
"makelogger" をインストールするスクリプト"install.sh"を作成 (スクリプト内容は後述)
"install.sh" を実行して "makelogger"をインストール
# "install.sh",  "makelogger", "cmdlogger" を同じディレクトリに配置した前提で
$ cd <install.shのあるディレクトリ>
$ sh install.sh
"makelogger"を実行して、Androidビルド
$ cd <androidのソースのrootディレクトリ>
$ makelogger -j4
# ビルド完了後、log_YYYYMMDD_HHMMSS.txtが出力される

スクリプト内容

makelogger
#!/bin/bash

#makeのログ内容を "cmdlogger" (ファイル出力&ターミナルにも出力するスクリプト)にパイプで渡す
make $@ |& cmdlogger
cmdlogger
#!/bin/bash

#日時付ファイル名を生成
NAME=`date '+log_%Y%m%d_%H%M%S.txt'`

#パイプで受け取った内容をターミナルとファイル両方に出力
while read LINE; do
     echo $LINE
     echo $LINE >> $NAME
done
install.sh
#どこのディレクトリからでも実行できるように、
#デフォルトでpath設定されているディレクトリ "~/bin" にスクリプトをコピー
cp cmdlogger ~/bin
cp makelogger ~/bin

#スクリプトに実行権限を与える
chmod 755 ~/bin/cmdlogger
chmod 755 ~/bin/makelogger

その他

cmdloggerってのを作らなくても、
linux標準のteeコマンドってのをうまい事使えばできたぽい、、
teeコマンドってのを知りませんでした、、、

ま、シェルスクリプト作る練習になったからいいや、、、


 
 

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元