AIRのログを出力する際に、ファイルに出力する方法は何度か記述してきましたが、
今回はsyslogに出力する方法です。

そもそも、なぜsyslogなのかといえば、ずばりLinuxのtail & grepを使いたいからです。
でも、開発はWindows上でやりたいのです。
ファイルに記述していると、Windowsがファイルをロックしてしてしまい今ひとつ使い勝手がよくありません。
(私個人としては・・・)

tail -f air.log | grep info

みたいにしてあるデバッグレベルや、あるカテゴリだけに注目してログを見たいのです。

以前は、TCPのソケットを使って実現しようとしましたが、今ひとつ動きがおかしく結局闇に葬りさりつつあるのですが、
AIR2になってUDPもサポートしたので、ここはUDPでsyslogへの出力で再チャレンジです。
(そもそも、TCPでのsyslogをサポートするにはsyslog-ngやrsyslogなどに限定されますが、UDPならそんな心配はいりません。)

私はwindowsなのでsyslogを別サーバに飛ばしていますが、
macならそのままローカルのsyslogに出力してもいいのかもしれません。
(私はmacユーザではないので、それが一般的に通じるのかは知りませんが・・・・)

ということで使い方ですが、flexのlogging機能を使っているので出力は変わりません。

import com.coltware.airxlib.log.UDPSyslogTarget;

var syslog:UDPSyslogTarget = new UDPSyslogTarget("192.168.1.5");
syslog.facility = UDPSyslogTarget.LOG_LOCAL1;
syslog.program = "AdobeAIR";
syslog.filters = ["com.coltware.*"];
syslog.level = LogEventLevel.DEBUG;
syslog.includeCategory = true;
Log.addTarget(syslog);

のようにします。
TraceTargetと違うのは、コンストラクタでホストとポート(デフォルトは514)を指定することと、
facilityとprogramを指定することぐらいです。

ソースは、

http://code.google.com/p/airxlib/source/browse/trunk/src/com/coltware/airxlib/log/UDPSyslogTarget.as

にあります。
http://code.google.com/p/airxlib/downloads/listからもswcがダウンロードできます。
coltware_airxlib_log_r3.swc
というファイルをダウンロードしてください。

ちなみに出力結果(のサンプル)は

Feb  1 23:46:01 [info] AdobeAIR: com.coltware.airxlib.db.DBManager create if not exists table .... invoked
Feb  1 23:46:02 [info] AdobeAIR: com.coltware.airxlib.db.DBManager TABLE CREATE OK 
Feb  1 23:46:02 [debug] AdobeAIR: com.coltware.airxlib.db.DBManager [1/7] [SQL:] CREATE TABLE  IF NOT EXISTS project( 
Feb  1 23:46:02 [debug] AdobeAIR: com.coltware.airxlib.db.DBManager [2/7] sysid INTEGER  PRIMARY KEY AUTOINCREMENT ,
Feb  1 23:46:02 [debug] AdobeAIR: com.coltware.airxlib.db.DBManager [3/7] title TEXT  NOT NULL ,
Feb  1 23:46:02 [debug] AdobeAIR: com.coltware.airxlib.db.DBManager [4/7] createdAt DATE  NOT NULL ,
Feb  1 23:46:02 [debug] AdobeAIR: com.coltware.airxlib.db.DBManager [5/7] updatedAt DATE  NOT NULL ,
Feb  1 23:46:02 [debug] AdobeAIR: com.coltware.airxlib.db.DBManager [6/7] createdBy INTEGER ,
Feb  1 23:46:02 [debug] AdobeAIR: com.coltware.airxlib.db.DBManager [7/7] updatedBy INTEGER );

みたいに出ます。

使っているのはrsyslogで、出力指定は

$template air,"%timegenerated% [%syslogseverity-text%] %programname%: %msg%"
local1.*                                                /var/log/air.log;air

のようの感じです。

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

Leave a Reply

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




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

WEB記事:CodeZine
執筆記事はこちら
カレンダー
2011年2月
« 1月   3月 »
 123456
78910111213
14151617181920
21222324252627
28  

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