C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: Webフォームのイベント発生を自動的にログ出力したい


(過去ログ 20 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■8287 / inTopicNo.1)  Webフォームのイベント発生を自動的にログ出力したい
  
□投稿者/ 向井 (4回)-(2007/09/27(Thu) 11:42:56)

分類:[ASP.NET (VB)] 

向井と申します。

Webフォームで発生したイベントを自動的にログ出力する方法はないでしょうか。

S2Container.NETを参考にRealProxyでの実現を調べていましたが、
RealProxyはインターフェイスを実装していないとマーシャリングできないため、
IHttpHandlerのProcessRequest()メソッドしかインターセプトできませんでした。

各画面にログ出力をコーディングするのは次の問題があるので避けたいのです。
・ログの信頼性に欠ける(ログ出力を呼び出し漏れがあるかもしれない)
・メソッド名をハードコーディングしないといけないので面倒
 (logger.Debug("btnRegister_Click")などのように)

皆様はどうされているのでしょう。
よろしくお願いします。

環境:
・ASP.NET 2.0
・VB.NET


引用返信 編集キー/
■8289 / inTopicNo.2)  Re[1]: Webフォームのイベント発生を自動的にログ出力したい
□投稿者/ 渋木宏明(ひどり) (390回)-(2007/09/27(Thu) 11:58:38)
渋木宏明(ひどり) さんの Web サイト
> Webフォームで発生したイベントを自動的にログ出力する方法はないでしょうか。

例えばどんな、イベントでしょう?
ボタンクリックとかまで取得したいんですか?

だとして、うまくいくかどうかは別として、基本的なアイデアレベルならいくつか思いつきますが、どれもどこか泥臭くなってしまいますね。
どのパターンでいくとしても、自動生成されたコードも少し書き換えなくちゃならないと思うし。

> 皆様はどうされているのでしょう。

今のところ、特に何も (^^;

そういうのが必要に感じるほど複雑な ASP.NET アプリケーション書いたこと無いし。
フレームワーク見たいの作る時は必要そうですね。
引用返信 編集キー/
■8292 / inTopicNo.3)  Re[1]: Webフォームのイベント発生を自動的にログ出力したい
□投稿者/ mあ (74回)-(2007/09/27(Thu) 12:45:39)
2007/09/27(Thu) 12:51:03 編集(投稿者)
No8287 (向井 さん) に返信
> 向井と申します。
> 
> Webフォームで発生したイベントを自動的にログ出力する方法はないでしょうか。
> 

クリックの履歴を取るだけなら、
JavaScript で、
function initialize() {
   var os = document.getElementsByTagName("input");
   for (var i=0;i < os.length;i++) {
      switch (os[i].type.toLowerCase()) {
      case "button":
         //既存のクリックイベントよりも先に行う必要
         //あるので多少工夫が必要かも。
         os[i].attachEvent("onclick", function() {
             var arr = [];
             arr.push(this.name);
             arr.push(this.id);
             arr.push(this.value);
             arr.push(createSeaser2AjaxEventParameter(this));
             clickEventHistoryByAJAX(arr.join("&"));
         }
     }
   }
}
function createSeaser2AjaxEventParameter(o) {
  //AbstractAction クラスの doAjax() 呼び出し規約に則った
  //フォームリクエストパラメータの生成と設定
}
function clickEventHistoryByAJAX(param) {
    xmlhttp.open("http://xxx/?" + param, xx, true);
    xmlhttp.send(null);
}
みたいにして、
AbstractAction クラスに doAjax 追加して、
ログ出力の記述すればいいのではないかと。
他にも Ajax 使っているなら、サブクラス
のdoAjax はオーバーライドになりますね。
入り口で、super.doAjax(param);
してから作業すればいいのではないかと考えます。

# Java な書き方で申し訳ないのですが・・・



引用返信 編集キー/
■8293 / inTopicNo.4)  Re[2]: Webフォームのイベント発生を自動的にログ出力したい
□投稿者/ 向井 (5回)-(2007/09/27(Thu) 12:54:57)
返信ありがとうございます。

> 例えばどんな、イベントでしょう?
> ボタンクリックとかまで取得したいんですか?

はい。クリックイベント、チェンジイベントです。

> だとして、うまくいくかどうかは別として、基本的なアイデアレベルならいくつか思いつきますが、どれもどこか泥臭くなってしまいますね。

やはりそうなんですか。

> そういうのが必要に感じるほど複雑な ASP.NET アプリケーション書いたこと無いし。
> フレームワーク見たいの作る時は必要そうですね。

ユーザの操作を追跡するためのログはまず最初に必要となるログな気がするので、
それほど特殊な悩みではないように思っています。

しかし検索してもあまり情報がなかったので、
やはりみなさんハードコーディングで対応されているのでしょうか。

せっかく投稿したので、クローズせずに
もう少しだけご意見を伺う時間を頂いてもよろしいでしょうか。

よろしくお願いします。
引用返信 編集キー/
■8360 / inTopicNo.5)  Re[2]: Webフォームのイベント発生を自動的にログ出力したい
□投稿者/ 向井 (6回)-(2007/09/28(Fri) 11:49:44)
mあさん、ありがとうございます。

教えて頂いた方法なら実現できそうですね。

わかりました。ありがとうございました。


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -