2012-03-20 8 views
11

Ninjectを使用してMVC3アプリケーションにlog4netログを注入しようとしています。 Ninject.MVC3パッケージを使用しているので、App_Startメソッドを自動的に拡張し、すべての依存関係をバインドするRegisterServicesメソッドを含むNinjectMVC3クラスがあります。私もNinject.Extensions.Logging.Log4Netパッケージを持っていますが、使い方は分かりません。 web.configにlog4netを設定する方法はすでに分かっていますが、この拡張機能をDIに使用する方法はわかりません。MVC3プロジェクトでNinject.Extensions.Logging.Log4Netを正しく設定するには

私は以下のすべての記事や記事を読んだが、どれもDIロギングのプロジェクトを正しく設定する方法を定義していないようだ。

http://dotnetdarren.wordpress.com/2010/07/29/logging-in-mvc-part-4-log4net/で、Darren はすばらしい記事を提供しますが、DIを扱うようには見えません(少なくとも私はそれを見ません)。

Using Ninject to fill Log4Net Dependencyの Remo Gloorは、拡張機能は実装に必要なすべてのものを提供する必要があると述べていますが、インスタンス化の方法のコードは示していません。

https://github.com/ninject/ninject.extensions.logging/wiki/Usingのninject.extensions.loggingのドキュメントは、最高でも非常に制限されています。私は何度もそれを再読み込みしていますが、NinjectMVC3クラスのインジェクションをバインドする方法や、コントローラークラスからロガーを呼び出す方法の具体例をまだ見ていません。最も有望な記事で

、MoosakaはNinject.Extensions.Logging.Log4net unexpected behaviorでいくつかの素晴らしいコードを提供していますが、私はそれをしようとしたとき、私は「ここに保護されたコンストラクタ 『ロガー』にアクセスできません」という旨のILogger logger = new Logger(type);でLoggerFactoryでコンパイルエラーを取得します。また、彼は「この混乱を別のクラスライブラリに取り除く」と述べている。全体的に別個のプロジェクトという意味ですか?

MVC3プロジェクトでDependancy InjectionをNinjectとLog4Netで使用する方法については、さまざまなオプションと日付のついた投稿がすべて失われています。また、重要な場合は、私のすべてのNinjectコードが私のドメインプロジェクトにありますが、ログはドメインとWebプロジェクトの両方から(そして私の単体テストでは嘲笑されて)実行される必要があります。どんな助けもありがとうございます。

答えて

9

通常のlog4net設定以外は設定する必要はありません。

あなたがしなければならないことは、ログしたい場所にILoggerを注入することだけです。 https://github.com/ninject/ninject.extensions.logging/wiki/Using

+1

ありがとうございます。私はそれがロガーを注入するための追加のコードを必要としなかったことに気付かなかった。私はまだ私のglobal.asax.csファイルで 'log4net.Config.XmlConfigurator.Configure();'を呼び出す必要がありますか?それにもかかわらず、私はNinject 3.0.0へのアップグレードの問題に遭遇しているようです。あなたのページに私の問題を掲載しました。http://www.planetgeek.ch/2011/12/30/new-features-and-changes-of-ninject-3-0/comment-page-1/#comment-2120 。あなたがそれに反応できるなら、私は大いに感謝します! – bigmac

+5

ロギングが機能します。ありがとうトムレモ!他の人には、global.asax.csのConfigureメソッドを呼び出す必要がありますが、他のコードは必要ありません。ただし、Ninject 3.0.0にアップグレードする必要があり、Ninject.Extensions.Conventionsなどの副作用が発生する可能性があることに注意してください。 – bigmac

関連する問題