Common Infrastructure Libraries for .NET(Common.Logging)をEnterprise Library 4.1のLogging Application Blockで使用しようとしています。 docsによれば、これがサポートされています。Microsoft Enterprise Libraryロギングアプリケーションブロックを構成してロギングカテゴリを処理する方法は?
私が遭遇してる問題は、私はそうのような、何かをログに記録しようとすると、(この例では、私はASP.NET MVCアプリケーションにいる)ということである。
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
ILog log = LogManager.GetCurrentClassLogger();
log.Info("Hello world!");
return View();
}
代わりのログメッセージを取得イベントログにエラーが表示されます。
メッセージ: 'TestApp.Controllers.HomeController'カテゴリの明示的なマッピングはありません。
まあ、デフォルトのカテゴリを設定するCommon.Loggingのいずれかのオプションがあるようには思えない、と私はそれがない場合でも、任意のカテゴリを受け入れるようにLoggingConfigurationを設定する方法を見つけ出すことはできません定義された。
は、ここに私のLoggingConfigurationの抜粋です:
<loggingConfiguration name="Logging Application Block" tracingEnabled="true"
defaultCategory="General" logWarningsWhenNoCategoriesMatch="true">
...
<categorySources>
<add switchValue="All" name="General">
<listeners>
<add name="Formatted EventLog TraceListener" />
<add name="Email TraceListener" />
</listeners>
</add>
</categorySources>
<specialSources>
<allEvents switchValue="All" name="All Events" />
<notProcessed switchValue="All" name="Unprocessed Category" />
<errors switchValue="All" name="Logging Errors & Warnings">
<listeners>
<add name="Formatted EventLog TraceListener" />
</listeners>
</errors>
</specialSources>
</loggingConfiguration>
私はfalseにlogWarningsWhenNoCategoriesMatch
を設定しようとしたが、それは単なる警告を沈黙 - それは伐採作業は行いません。
私はまた<notProcessed switchValue="All" .../>
特別なソースを取り除こうとしましたが、それは効果がないようです。
これを動作させる方法があれば誰でも知っていますか?ありがとう!
@Tuxo - Awesome!私はGetLoggerがこのように動作することに気づいていませんでした。私の__assumption__は、GetLoggerがServiceLocatorパターンのように、指定された型に一致するロガーを返すということでした。今、私の命名はもっと理にかなっています。ありがとうございました!!! – Pandincus
@Pandincus - おそらくあなたが考えていたタイプのGetLoggerオーバーロードがあります。 –