- PR -

C#で全てのメソッドに同じ動作を行わせたい

投稿者投稿内容
ゆうた
会議室デビュー日: 2005/08/23
投稿数: 6
投稿日時: 2005-08-26 19:03
log4はログを出力したいタイミングでコーディングしないといけないので私の条件に合致しませんでした。RealProxyによるロギングはC#でのアスペクト指向の例の一つのようですね。
http://www.ne.jp/asahi/nami/mei/cstips/methodlog.html
ここの例を実装したところうまく動きました。
ただし、ロギングしたいクラスが必ずContextBoundObjectを継承していないと当然コンパイラがロギングのロジックを入れ子しないので、Asp.netの各フォームの動作をロギングしたい場合、Pageの継承とぶつかってしまいます。
各フォームの業務ロジックをContextBoundObjectを継承する別クラスに退避したら、当然ロギングは動くのですが、各メソッドの冒頭にロギングのコーディングを書くより面倒ですね^^;
各フォームでContextBoundObjectとPageを多重継承したいです・・・
ゆうた
会議室デビュー日: 2005/08/23
投稿数: 6
投稿日時: 2005-08-26 19:07
どっとねっとふぁん様>HTTPモジュールだったら、自分の条件に合致するので良かったのですが、、、
今回の案件の実働環境がIIS配下に(他社製を含む)複数のWebアプリが混在するという状態だったのでHTTPモジュールを作成することは実現できませんでした。
残念です・・・
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2005-08-26 19:13
引用:

ゆうたさんの書き込み (2005-08-26 19:07) より:
今回の案件の実働環境がIIS配下に(他社製を含む)複数のWebアプリが混在するという状態だったのでHTTPモジュールを作成することは実現できませんでした。


んーよく分かりませんが、HTTPモジュールはアプリケーションレベルで設定できますよ。
※それでも駄目という状況であるなら仕方ないですが…
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-08-27 05:57
引用:

ゆうたさんの書き込み (2005-08-26 19:03) より:
log4はログを出力したいタイミングでコーディングしないといけないので私の条件に合致しませんでした。
各フォームの業務ロジックをContextBoundObjectを継承する別クラスに退避したら、当然ロギングは動くのですが、各メソッドの冒頭にロギングのコーディングを書くより面倒ですね^^;


 なぜ、すべてのメソッドでログを吐く必要があるのでしょう?
 ユーザの操作をトレースするなら、ポストされた内容をログすればいいはずです。わざわざすべてのメソッドでロギングする目的が不明です。不明というか、無駄だと思います。

 業務ロジックを全く切り出したなら、後々が楽になると思いますけど?
_________________
mei
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 114
投稿日時: 2005-08-28 11:50
こんばんは、meiです。

引用:

ゆうたさんの書き込み (2005-08-26 19:03) より:
http://www.ne.jp/asahi/nami/mei/cstips/methodlog.html
ここの例を実装したところうまく動きました。
ただし、ロギングしたいクラスが必ずContextBoundObjectを継承していないと当然コンパイラがロギングのロジックを入れ子しないので、Asp.netの各フォームの動作をロギングしたい場合、Pageの継承とぶつかってしまいます。



別の方法としては、リフレクションで動的にクラスを作るというのはどうでしょうか?

以前、遊びで書いた記事
http://d.hatena.ne.jp/akiramei/20040810#p3

ゆうたさんの用途に使えるかどうかは不明ですが、何かの参考になればと。

#自分のページがリンクされていたので、ちょっと反応。(^^;

スキルアップ/キャリアアップ(JOB@IT)