NLog.Изменить имя класса - PullRequest
       11

NLog.Изменить имя класса

4 голосов
/ 07 сентября 2011

Мне интересно, есть ли способ изменить имя класса экземпляра регистратора во время выполнения? Я хочу не создавать регистратор в каждом классе, но внедрить его через конструктор. но после этого я получаю в файле неправильное имя класса, которое вызывает событие. Структура проекта выглядит следующим образом

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 test
2011-09-07 09: 33: 59.7611 | INFO | c1 | c2 test

1 Ответ

3 голосов
/ 11 сентября 2011

Вместо средства визуализации ${logger} используйте средство визуализации ${callsite}.

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

Это должно привести к ожидаемому результату.

...