4

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を使用できません。

4

0 に答える 0