- - PR -
C#で全てのメソッドに同じ動作を行わせたい
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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-26 19:07
どっとねっとふぁん様>HTTPモジュールだったら、自分の条件に合致するので良かったのですが、、、
今回の案件の実働環境がIIS配下に(他社製を含む)複数のWebアプリが混在するという状態だったのでHTTPモジュールを作成することは実現できませんでした。 残念です・・・ | ||||
|
投稿日時: 2005-08-26 19:13
んーよく分かりませんが、HTTPモジュールはアプリケーションレベルで設定できますよ。 ※それでも駄目という状況であるなら仕方ないですが… | ||||
|
投稿日時: 2005-08-27 05:57
なぜ、すべてのメソッドでログを吐く必要があるのでしょう? ユーザの操作をトレースするなら、ポストされた内容をログすればいいはずです。わざわざすべてのメソッドでロギングする目的が不明です。不明というか、無駄だと思います。 業務ロジックを全く切り出したなら、後々が楽になると思いますけど? _________________ | ||||
|
投稿日時: 2005-08-28 11:50
こんばんは、meiです。
別の方法としては、リフレクションで動的にクラスを作るというのはどうでしょうか? 以前、遊びで書いた記事 http://d.hatena.ne.jp/akiramei/20040810#p3 ゆうたさんの用途に使えるかどうかは不明ですが、何かの参考になればと。 #自分のページがリンクされていたので、ちょっと反応。(^^; |