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

有没有人设法解决这个问题?我曾考虑过传入调用者的类型,但对于我的模块中的每个日志调用都必须这样做似乎有点笨拙。

我无法使用 .Net 4.5,所以很遗憾无法使用CallerMemberNameAttribute

4

0 回答 0