Prism 4 を使用しており、さまざまなモジュールが log4net を使用してログを記録できるようにしたいと考えています。現時点では、次の ILoggerFacade 実装があります。
public class CustomLogger : ILoggerFacade
{
private readonly ILog _logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().GetType());
static CustomLogger()
{
XmlConfigurator.Configure();
}
public void Log(string message, Category category, Priority priority)
{
switch (category)
{
case Category.Debug:
_logger.Debug(message);
break;
case Category.Info:
_logger.Info(message);
break;
case Category.Warn:
_logger.Warn(message);
break;
case Category.Exception:
_logger.Error(message);
break;
}
}
}
これは正常に動作します。私のモジュールには ILoggerFacade が注入されており、それを介してログを記録できます。ログはここで終了し、log4net で終了します。私の問題は、CustomLogger のロガー インスタンスを使用しているため、ログ エントリが呼び出しサイト情報を失うことです。そのため、次のようになります。
System.Reflection.RuntimeConstructorInfo: 2012-10-11 15:41:07,486 [23] INFO - test log
誰かがこの問題を解決できましたか? 呼び出し元の Type を渡すことを考えましたが、モジュール内のログ呼び出しごとにそれを行うのは少し面倒です。
.Net 4.5 を使用できないため、残念ながらCallerMemberNameAttributeを使用できません。