NLog не использует самый производный класс в LogManager.GetCurrentClassLogger - PullRequest
0 голосов
/ 16 января 2020

У меня есть следующие настройки class. Logger должно иметь имя *.UsedClass, а не *.BaseClass. Можно ли заставить его работать из BaseClass или я должен создать экземпляр Logger из самого производного класса?

public abstract class BaseClass
{
    public Logger Logger { get; }

    protected BaseClass()
    {
        Logger = LogManager.GetCurrentClassLogger(GetType());
    }
}

public abstract class ExtendedClass : BaseClass
{

}

public class UsedClass : ExtendedClass
{

}

1 Ответ

3 голосов
/ 16 января 2020

С документы :

GetCurrentClassLogger(Type)

Получает пользовательский регистратор с именем текущего класса. Используйте loggerType для передачи типа необходимого Регистратора. Класс должен наследоваться от Logger.

Таким образом, он дает вам регистратор с именем текущего класса, и он пытается использовать Type, который вы передаете, чтобы решить, какой тип регистратора создать.

Если вы хотите получить регистратор с именем текущего класса, следуйте вики и используйте:

LogManager.GetLogger(GetType().ToString())
...