ASP.netでのLog4netの使用方法について質問です。


GetLoggerで作成されたインスタンスの保持はどのように行うものなのでしょうか。
ページ内で完結する処理であれば
http://www.atmarkit.co.jp/fdotnet/vblab/extcompo_01/log4net_04.html

のリスト15にあるようにページクラスのインスタンス変数として宣言し、
そこで初期化を行えばいいのでしょうが、ビジネスロジック処理などが別クラスとしてある場合、そのクラスの中でもログを出力する必要があると思います。
その場合、クラスそれぞれで同様にインスタンスを作成するのか、ページで作成したインスタンスを引き渡すのか、
どのように行ったらいいか迷ってます。

シングルトンを使って、アプリレベルで一つのインスタンスを使いまわすことも考えたのですが、
さすがにそれだといろいろ問題があるでしょうし。

「私はこうやっている」とか、メリット、デメリットなどありましたら教えていただけないでしょうか?

回答の条件
  • 1人2回まで
  • 登録:2008/11/07 18:21:26
  • 終了:2008/11/11 11:54:23

回答(1件)

id:startkit No.1

startkit回答回数166ベストアンサー獲得回数12008/11/09 20:03:26

id:khazad-Lefty

えっと…そこのURLって質問の中に記載されてるページですが…。

2008/11/10 13:50:45
  • id:khazad-Lefty
    とりあえず、いろんなページ(Log4j含め)を調べての結論(「自信あり」ではないですがとりあえずこの解釈でいけそうな感じなので)

    ●Loggerはスレッドセーフなので、一つのインスタンスを複数スレッドで使いまわしても問題がない。
    (スレッドセーフってそういう意味でいい?)

    ●ただし、ログに出力もとのクラスを記載する。出力元によって動作を変えたりすることができるようにする。等の理由で、通常はクラス単位でShared(クラスフィールド?)でインスタンスを作成することが一般的。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません