AIR for Androidを使って、デバッグをどうやってやるか考えた。

1つはUSB接続でのデバッグなのだが、どうしても、いろいろ説明を読むのが面倒なのと、
それと、実際にUSB接続をしていないときでも、どのように動いているかをきちんと知りたいと思った。

要は、ログの出力機能もアプリの仕様のうちとしてしまいたい。
なんか、おかしいんですけど・・・って言われたときに、
じゃ、端末貸してと言って、そこで、デバッグを出せるようにしたいということ。
(まだそんなシーンは想定できないが・・・)

さらに、画面(スクリーン)に出すのもいやだ。
(小さい画面に、変な情報がわんさかでてくるのは見苦しい。)

だったら、やっぱり私的にはSyslogなのです。

ただし、どうやらAndroid上でのAIRではUDPが使えないようだ。
(実際には、知らないだけかもしれないが、どうして使えないのか調べるのが面倒なので・・・)
代わりに、TCPを使ってSyslogにログを送信する。

必要なもの

1) Syslogサーバ
私はrsyslogを使いました。CentOSなどではこちらが容易に使えます。syslog-ngでもいいかとも思います(私は個人的にはこちらのほうが好きです。)

2) TCPSyslogTarget クラス
 airxlib_log よりダウンロードしてください。
 UDPができて、それで闇に葬ろうと思っていたクラスが、私的には再び表に出てしまいました。。。

3) WiFi接続環境。
 必須ではありませんが、それなりにそれ以外のネットワークの知識も必要になると思います。

準備

rsyslogでは

$ModLoad imtcp.so
$InputTCPServerRun 514
$AllowedSender TCP, 127.0.0.1, 192.168.1.0/24

:
local1.*                                                /var/log/air.log

のようにして、TCPでsyslogを受け付けるようにしてください。
私は192.168.1のネットワーク環境を構築しているので、このような設定です。
また、私はlocal1のログはすべて、/var/log/air.logに出力するようにしました。
つまり、AIR側での出力でも、local1のfacilityを選択する必要があるという事です。

次に、ログの記述方法ですが、こちらはflexのlogging機能を使うだけです。

import com.coltware.airxlib.log.TCPSyslogTarget;

//  私のsyslogサーバは192.168.1.5です。
var syslog:TCPSyslogTarget = new TCPSyslogTarget("192.168.1.5");
syslog.program = "AdobeAIR";
syslog.filters = ["*"];
syslog.level = LogEventLevel.DEBUG;
syslog.facility = TCPSyslogTarget.LOG_LOCAL1;
syslog.includeCategory = true;
Log.addTarget(syslog);

あとは、いつも通り、

import mx.logging.ILogger;
import mx.logging.Log;

private static var log:ILogger = Log.getLogger("foofoo");
log.debug("mmmmmm....");

みたいに書けばいいだけです。

お仕事のご依頼・相談を承ります
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら

Leave a Reply

お仕事のご依頼・相談
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら
ソフトウェア&ライブラリ




ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
執筆書籍
本、雑誌等

WEB記事:CodeZine
執筆記事はこちら
カレンダー
2011年4月
« 3月   5月 »
 123
45678910
11121314151617
18192021222324
252627282930  

カスタム検索
RSS
Add to Google < !–adsense–>
アーカイブ
カテゴリ
にほんブログ村 IT技術ブログへ