Предложите дизайн: почти каждый объект в приложении имеет логгер
Я пишу заявку. Я использую NLog для регистрации. В этом приложении почти каждый объект может писать в журнал. Я определяю защищенный член для этого:
protected Logger logger;
protected virtual Logger Logger
{
get { return logger ?? (logger = LogManager.GetLogger(this.GetType().ToString())); }
}
В этом случае мне нужно скопировать / вставить этот код для каждого базового класса в приложении. Или я вижу другой вариант: определить специфичный для приложения корневой объект с регистратором в нем и подкласс его. Но семантически это звучит неправильно, потому что это не так "это" ситуация для меня.
есть ли лучшие варианты?