понедельник, 10 июня 2013 г.

Использование Nuget Packages на примере NLog

Для написания этой статьи, меня подтолкнула необходимость искать как правильно получить ссылку на логер в NLog. В общем, в следующий раз искать буду, но уже у себя в блоге.

В давние времена, когда компьютеры были уже персональными, но еще про .Net никто не слышал, стояла очень остро проблема, которая называлась DLL Hell. С появлением .Net и возможности непосредственно в сборке хранить информацию о версии, подписи и т.д. Проблема DLL Hell ушла в прошлое, GAC позволяет хранить в одном месте сборки разных версий. Но, следуя тем же рекомендациям от Micorosoft, если сборки не предполагаются для глобального использования, то лучше их размещать не в GAC, а тянуть вместе с приложением. Но в этом случае возникает проблема уже на стороне разработки. Как подключать эти "внешние" библиотеки в решения, как поддерживать их актуальную версию, особенно, если "внешние" библиотеки, являются действительно внешними по отношению к организации.
Для решения этой и многих других проблем, было разработано расширение для Visual Studio которое получило название NuGet.
NuGet позволяет добавлять, обновлять и удалять библиотеки в виде пакетов. NuGet-пакет является набором файлов, упакованных в один файл с расширением .nupkg.
NuGet, кстати позволяет не только подключать чужие пакеты, но и создавать свои, но об
этом в другой раз.
Давайте теперь покажу кучу картинок, как этим добром пользоваться.
В Visual Studio 2012 NugetManager уже установлен по умолчанию. Убедиться в этом модно открыв:
Как же им воспользоваться. Да нет ничего проще. Как я обещал в заголовке, пример будет на NuGet Package с именем NLog. Данный компонент служит, как следует из названия, для логирования, ну а зачем нужны логи я рассказывал на одном из собраний нашего MCP-клуба.
Все, к делу. Создаем новое консольное приложение и открываем контекстное меню на проекте:
Вполне закономерно выбрав Manage NuGet Packages увидим окно:
Оно пока пустое и скучное, т.к. мы в наш проект еще не подключили ни одного проекта. Подключаем, для этого выбираем в левом дереве Online, после чего в строку поиска вбиваем NLog. В загрузившемся списке выбираем сам NLog и файл конфигурации для него:
Инсталируем пакеты. Решение после инсталяции примет вид:
Все. Мы установили пакеты. Теперь, после построения, у нас в выходной папке будет не только наше решение, но и dll поставляемые в пакетах.
На этом про NuGet, я пока заканчиваю, а перехожу к NLog.
Для работы с NLog необходимо настроить файл конфигурации. На самом деле, в большинстве случаев, достаточно открыть его и раскоментировать два блока:
Теперь все сообщения выше чем Trace будут записываться в файл (второй блок), а файл будет записываться в папку logs с именем состоящим из текущей даты (первый блок). Кстати, первый блок определяет и вид сообщений, которые записываются в лог.
Кстати, NLog поддерживает следующие уровни логирования:
  • Off (самый высокий)
  • Fatal
  • Error
  • Warn
  • Info
  • Debug
  • Trace (самый низкий)
  • Все, давайте теперь воспользуемся логером. Для этого в нашем приложении напишем вот такой код:
    static void Main(string[] args)
    {   
       Logger logger = LogManager.GetCurrentClassLogger();
       logger.Trace("Привет{0}", "!");
       logger.DebugException("Произошла ошибка", new ArgumentNullException());
       logger.Fatal("Пока");
    }

    В соответствии с раскоментированными настройками, у нас появится вот такой файл:
    Все. 

    1 комментарий:

    1. Я всё же рекомендую добавлять нагеты не для проекта, а для солюшна.

      ОтветитьУдалить