NLOG。更改班级名称

时间:2011-09-07 06:56:34

标签: c# logging nlog

我想知道是否有办法在运行时更改logger实例的类名?我不想在每个类中创建记录器,而是通过构造函数注入它。但是在我这样做之后,我得到了错误的类名,它调用了这个事件。项目结构就像这样

public class c1
{
    private Logger _logger = LogManager.GetCurrentClassLogger();
    public void doSmth()
    {
        c2 myC2= new c2(_logger);
        myC2.LogSomething();
    }

    public void LogSomething()
    {
        _logger.Info("c1 test");
    }
}


public class c2
{
    private Logger _logger;

    public c2(Logger logger)
    {
        this._logger = logger;
    }

    public void LogSomething() {
        _logger.Info("c2 test");
    }
}

一切都很好,但在日志文件中我们得到了

  

2011-09-07 09:33:59.7521 | INFO | c1 | c1测试
  2011-09-07 09:33:59.7611 | INFO | c1 | c2 test

1 个答案:

答案 0 :(得分:3)

使用${callsite}渲染器,而不是${logger}布局渲染器。

<target xsi:type="Trace" 
            name="t"  
 layout="${callsite:className=true:includeSourcePath=false:methodName=false}
 | ${message}" />

这应该会产生您的预期结果。