Как следует использовать LoggerSource в DNN 7+?

Я изучаю возможность ведения журналов на моем сайте DNN 7+. Я хотел бы иметь настраиваемый уровень ведения журнала, например, предоставляемый log4net.

Я попытался выполнить инструкции по интеграции log4net, найденные на сайте DNN здесь, http://www.dnnsoftware.com/community-blog/cid/141723/Using-log4net-with-DotNetNuke. После добавления ссылки и строки кода для использования ведения журнала:

DnnLog.Info("My Logging Worked!");

Код сообщил о предупреждении, которое гласит:

'DotNetNuke.Instrumentation.DnnLog' устарел: '"Устарело в 7.0.1 из-за низкой производительности, используйте LoggerSource.Instance"'

Мне сложно найти информацию о том, как правильно поступать. Похоже, что «DnnLog» был заменен аналогичным классом для взаимодействия с log4net под названием «DnnLogger». Одно из отличий от использования этого класса (и класса «LoggerSource») заключается в том, что ведение журнала больше не выполняется с использованием статических методов.

Функция "GetLogger ()", используемая для получения экземпляра регистратора, принимает некоторые параметры, и мне пока не удалось найти какую-либо документацию, описывающую соответствующее использование. В источнике DNN есть множество примеров. Из этих примеров кажется, что подходящим использованием является предоставление текущего класса. Внутри файла «MyClass.cs», который объявляет класс «MyClass», кажется, что следующее будет правильным:

ILog logger = LoggerSource.Instance.GetLogger(typeof(MyClass));

or

DnnLogger logger = DnnLogger.GetLogger("MyClass");

Какой регистратор возвращает первая строка кода, в которой используется typeof ()? Под этим я подразумеваю, будет ли тогда этот регистратор использовать настройки log4net, настроенные для сайта? Если он не использует настройки log4net, где сохраняются файлы журналов и где настраиваются параметры конфигурации? Этот ботаник во мне хочет точно знать, что происходит с параметром класса typeof (), почему он используется?

Если первый пример не связан с log4net (или чем-то, что позволяет настраивать простой в использовании уровень ведения журнала), второй вариант - правильный путь? Если да, то какую строку нужно передать? «MyClass» было моим предположением, но я не мог подтвердить.

Если я полностью сбился с пути и должен подходить к этому с другой стороны, пожалуйста, не стесняйтесь вносить предложения.

Всем большое спасибо!


person RacerNerd    schedule 04.10.2013    source источник
comment
Хотя здесь это не совсем не по теме, вы можете получить лучший ответ в этом случае, разместив сообщение непосредственно на форумах DNN.   -  person Joel Coehoorn    schedule 04.10.2013
comment
Спасибо, Джоэл. Я принял ваше предложение и разместил его прямо на форуме DNN, это может только помочь. При этом я думаю, что StackOverflow и люди на этом сайте потрясающие, поэтому мне показалось, что это правильный путь. У меня пока нет ссылки на этот пост, так как он должен пройти модерацию.   -  person RacerNerd    schedule 04.10.2013


Ответы (1)


Я разместил этот же вопрос на форумах DNN Software и получил быстрый ответ. Перефразируя и расширяя этот ответ:

  • У устаревшего класса были проблемы с производительностью, потому что ведение журнала выполнялось с использованием статических методов. В новом стиле используются нестатические методы, поэтому каждая страница или класс могут создавать собственный экземпляр регистратора. Это предотвращает ожидание программой общего экземпляра при одновременном запросе журнала.
  • И ILog, и DNNLogger используют конфигурацию log4net.
  • Использование ILog с LoggerSource приближает вас к корням, поэтому его лучше использовать, чем DNNLogger, но особой разницы нет.
  • Лучший способ получить объект для логирования - это:

    ILog logger = LoggerSource.Instance.GetLogger(typeof(MyClass));
    
  • Передача имени класса помогает контекстуализировать информацию об ошибке при чтении файла журнала. Когда класс используется, файл журнала будет содержать пространство имен и класс вместе с информацией об ошибке.

  • Чтобы использовать классы LoggerSource и ILog, необходим следующий оператор using:

    using DotNetNuke.Instrumentation;
    

Надеюсь, эта информация поможет всем, кто интересуется изменениями регистрации в DNN 7.
Удачного кодирования!

person RacerNerd    schedule 08.10.2013
comment
Это самостоятельный ответ, поэтому, если есть кто-то, у кого есть что добавить, пожалуйста, сделайте это. Я с радостью проголосую за хороший ответ и, если возможно, уберу галочку. - person RacerNerd; 08.10.2013