2010年4月5日月曜日

BlazeDS 入門記(Debugging your application)

Getting started with BlazeDS / Building and deploying BlazeDS applications / Debugging your application

以下のようなデバッグができるらしい。
  • コードにブレークポイントがセットできる。
  • アプリケーションの実行を、一時停止、一時停止からの復帰、停止の制御ができる。
  • コードのステートメントに深く潜ったり戻ったりできる。
  • 変数の内容を確認できる。
  • 実行中のアプリ内で expression を evaluate できる。
Flex アプリケーションのデバッグは、trace() を埋め込むようなシンプルなものから、行レベルのデバッグまでできる。Flex Builder のデバッガやコマンドラインのデバッガ使えるらしい。


Using Flash Debug Player

コマンドラインデバッガもしくは Flex Builder デバッガを使用するためには、Flash Debug Player のインストールと設定が必要です。

どうも記事が古いのか私の環境がおかしいのか分かりませんが、ドキュメントに書かれた情報と私の環境が異なるようです。右クリックメニューに Show Redraw Regions(領域の再描画)のような項目が表示されるらしいのですが、、、。

とりあえず、http://www.adobe.com/support/flashplayer/downloads.html から Adobe Flash Player 10 — Debugger Versions をインストールしてみました。

FlexBuilder 上のデバッガからアプリを起動すると、trace()メソッドによるデバッグ情報の出力や、ブレークポイントの利用やステップ実行や変数の内容確認などができました。


Using logging to debug your application

Client-side logging

クライアントサイドでは、直接ログファイルにメッセージを書き出す方法と、Flex から生成されたメッセージをログファイルに書き出すように設定する方法があるらしい。前者は trace() で、後者が Logging API らしい。後者はログレベルとかを log4j のように設定できる感じですね。

設定は mm.cfg ファイルで行うらしい。ということで、以下のように設定しました。
ErrorReportingEnable=1
TraceOutputFileEnable=1
配置場所は、WinXP の場合は C:\Documents and Settings\username フォルダです。

trace() を埋め込んだ Flex アプリケーション Flash Builder から実行したところ、通常モードでもデバッグモードでも C:\Documents and Settings\username\Application Data\Macromedia\Flash Player\Logs\flashlog.txt ファイルが生成され、trace() の内容が表示されました。

mxmlファイル内に を入れたところ、Flex からのログも出力されるようになりました。

ちなみに、ドキュメントでは となっていましたが、Flash Builder 4 では loglevel 要素は存在しませんでした。


Server-side logging

サーバサイドのログ設定は services-config.xml に記述します。デフォルトでは標準出力に吐かれます。

利用可能なログレベルは以下のようになっているらしいです。

  • All 
  • Debug
  • Info
  • Warn
  • Error
  • None

以下、ログレベルを利用した設定例です。

<logging>

<!-- You may also use flex.messaging.log.ServletLogTarget. -->
    <target class="flex.messaging.log.ConsoleTarget" level="Debug">
        <properties>
            <prefix>[Flex]</prefix>
            <includeDate>false</includeDate>
            <includeTime>false</includeTime>
            <includeLevel>false</includeLevel>
            <includeCategory>false</includeCategory>
        </properties>
        <filters>
            <pattern>Endpoint</pattern>
            <!--<pattern>Service.*</pattern>-->
            <!--<pattern>Message.*</pattern>-->
        </filters>
    </target>
</logging>

設定は logging 要素を services-config.xml ファイルの services-config 要素直下に配置してあげれば OK です。


Measuring application performance

メッセージ処理部分のタイミングとサイジングに関するデータが取れるらしいです。

デフォルトではこの機能は動作してないが、動作させるとメッセージサイズ、サーバ処理時間、ネットワーク移動時間が取得できるらしい。この情報は、クライアント側がデータ送信、データ受信、メッセージ送信後の応答受信時に取得可能らしい。この情報のサブセットはサーバ上のアクセスでも取得できるらしい(ちょっと意味分からん)。

useProxy プロパティを false にしているとき以外はこのデータが取得できるらしい。

チャネル定義に以下の定義を設定すればデータが取れるらしい。
<record-message-times>
<record-message-sizes>

Measuring message processing performance に詳しい説明があるので、ここでは割愛。

0 件のコメント:

コメントを投稿