AJAXリモート・ログ・エージェント技法
Ajaxでデバッグしよう
フィッシュボーン
大坪 保行
2007/3/6
サーバ側サービス・プログラム |
私の仕事の現場ではJavaを開発言語として使用することが多いので、JSPやServletとして実装していますが、今回はレンタルサーバでも利用しやすいようにPerlで作成しました。以下のソースを参考にしてください。
local %params; |
ソース4:Remote Log サービス − 引数処理部 |
# 複数ユーザにて同時使用するため、利用ユーザを区別するために |
ソース5:Remote Log サービス − ログ記録処理部 |
ここでのポイントは、リモート・ログ・エージェントから送られてきた3つの文字列以外に、記録した日付や時刻と送信元アドレスとして環境変数REMOTE_ADDRの値を一緒に記録しています。
特に送信元アドレスの記録は、複数ユーザーが同時に使用することが多いWebシステムでは、複数ユーザーのログが同一ファイルに混在してしまったときに、grepなどのテキスト抽出ツールで送信元アドレス値を手掛かりに自分のログを抽出するために使用します。
# 複数ユーザーにて同時使用するため、利用ユーザーを区別するために |
ソース6:サーバ側サービス・プログラムのポイント |
2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "Start Log" 2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=0" 2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=1" 2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=2" 2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=3" 2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=4" 2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=5" 2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=6" 2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=7" 2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=8" 2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=9" 2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "End Log" 2007/01/26 22:07:13 C 192.168.1.10 日本語 使えます "便利です" |
ソース7:ログとして記録された内容 |
sample.htmlのstartlog()関数内にてfor文によるループを回しています。このループ内ではremotelog()関数の呼び出しを行っています。ログ例を見ていただくと分かりますが、同一時刻に高速にループ内の処理が実行されていることが記録されています。また、日本語のメッセージも正しく送られていることが記録されています。
導入方法 |
実際に開発の現場で利用する場合は、それぞれのプロジェクトで開発したHTMLやJavaScriptなどのファイルに組み込んで使用することになります。
1)設定ポイント
Perlにて実装しましたので WebサーバにApacheを使うサイトでPerlが利用できる環境であればほとんど修正せずに利用が可能だと思います。ここでは、CGIの格納フォルダとして/cgi-binを使用していますが、異なるフォルダを利用されている方は、利用環境に合わせて次の個所を修正して利用してください。
// 下記のJSP名を環境に応じて修正してください |
設定ポイント |
変数名の末尾がJspになっているのは、普段使用しているシステムではJSP版を使用しているためです。特に意味があって付けたわけではありません。
2)導入方法
デバッグしたいHTMLまたはJSPファイルに、リモート・ログ・エージェント機能を読み込む設定を1行追加します。
今回のサンプルHTMLでは、<HTML>タグのすぐ後に、リモート・ログ・エージェント機能を利用するためのファイルを読み込む記述をしています。デバッグ対象プログラムから利用するので、それより先に読み込まれる必要があることを注意してください。
利用方法 |
使用するメソッドは、以下のようにログをサーバへ出力する1つだけです。
remotelog()関数には3つの引数がありますが、デバッグ時に便利な情報として、ファイル名、モジュール名、メッセージ文の3つの文字列を引数として渡しています。ここでは引数として渡す文字列を使い分けていますが、処理としては3つの文字列をサーバへ送信しているだけですので、それぞれ適当な文字列を渡してください。
さっそくAjaxなデバック環境を試してみよう |
今回紹介しましたリモート・ログ・エージェント技法は、機能もシンプルで画面操作も要らないので仕様に与える影響もありません。デバッグ環境の改善や動作検証記録取得を目的とした技法です。従ってプログラマーがAjaxを現場へ導入して試すには最適だと思います。
Ajaxといっても、ソースコードを見ると意外と簡単なことが分かると思います。ここからXMLやDOM操作などに発展すれば、これまでのWebアプリケーション構築とは違った世界が見えてくるでしょう。
最後に、サンプルを含むソースコード一式はこちらからダウンロードしてください。これを応用してプロジェクトの開発環境の改善に役立ててください。
3/3 |
INDEX | ||
Ajaxでデバッグしよう | ||
Page1 厳しい開発の現場│充実する開発環境│ログが残せない│貧弱なクライアント開発環境│Ajax使っていますか?│AjaxはGUIじゃない |
||
Page2 開発環境の改善│基盤技術│動作概要│構成ファイル│動作確認用サンプルHTML│リモート・ログ・エージェント・プログラム |
||
Page3
サーバ側サービス・プログラム│導入方法│利用方法│さっそくAjaxなデバック環境を試してみよう |
- GASで棒、円、折れ線など各種グラフを作成、変更、削除するための基本 (2017/7/12)
資料を作る際に、「グラフ」は必要不可欠な存在だ。今回は、「グラフの新規作成」「グラフの変更」「グラフの削除」について解説する - GET/POSTでフォームから送信された値をPHPで受け取る「定義済みの変数」【更新】 (2017/7/10)
HTMLのフォーム機能についておさらいし、get/postメソッドなどの内容を連想配列で格納するPHPの「定義済みの変数」の中身や、フォーム送信値の取り扱いにおける注意点について解説します【PHP 7.1含め2017年の情報に合うように更新】 - PHPのfor文&ループ脱出のbreak/スキップのcontinue【更新】 (2017/6/26)
素数判定のロジックからbreak文やcontinue文の利点と使い方を解説。for文を使ったループ処理の基本とwhile文との違い、無限ループなども併せて紹介します【PHP 7.1含め2017年の情報に合うように更新】 - Spreadsheetデータの選択、削除、挿入、コピー、移動、ソート (2017/6/12)
Spreadsheetデータの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|