Pull to refresh

Правильное логгирование в Microsoft .NET Framework

.NET *

Зачем нужны логи


Очевидно, что логи делаются для разработчиков, чтобы облегчить им (нам) жизнь. Основные цели, ради которых существуют логи:
  • сказать, что же делает система прямо сейчас, не прибегая к помощи отладчика, т.к. это иногда не оправдано;
  • провести «расследование» обстоятельств, которые привели к определённому состоянию системы (например, падению или багу);
  • проанализировать, на что тратится больше времени/ресурсов, т.е. профилирование.

Примитивный подход


Казалось бы, всё просто:
public static void Log(string message) {
 File.AppendAllText("log.txt", message);
}

Зачем что-то ещё придумывать, подключать внешние библиотеки, настраивать конфиги?
На практике, оказывается, что всё не так: одного лог-файла становится уже недостаточно, возникают проблемы с многопоточностью, форматом логов, записью времени, производительностью итд.
Какие же фичи должен поддерживать хороший логгер?
Читать дальше →
Total votes 100: ↑77 and ↓23 +54
Views 104K
Comments 40

Используем NLog 2.0 в Silverlight или как я стал опенсорсником

Silverlight *
Началось все достаточно банально — с того, что мне понадобился logging в моем проекте на Silverlight.

Под «взрослым» .NET-ом я всегда пользовался NLog-ом от Ярека Ковальского. А почему не log4net, спросят многие из вас.
Все, конечно, достаточно субъективно, ну да ладно.
Читать дальше →
Total votes 73: ↑52 and ↓21 +31
Views 5.5K
Comments 32

Логгирование приложения на C# в базу данных FireBird Embedded с помощью NLog 2.0

.NET *Firebird/Interbase *
Sandbox
Приступая к своему первому десктопному приложению на С#, я задался вопросом ведения логов. Изучив предложения по данной теме, за хорошие отзывы и отсутствие платы за использование, мой выбор пал на NLog 2.0. После чтения документации на сайте, а также местных статьей, я легко настроил вывод отладочной информации в текстовый файл. Но пытливый ум на месте не стоит, и так как в моем приложении используется база данных FireBird Embedded, то я решил настроить логгирование в нее. Вот тут я и получил пазл длиной в 5 часов.
Читать дальше →
Total votes 26: ↑24 and ↓2 +22
Views 8.1K
Comments 4

Архитектура логирования

.NET *
Sandbox
Мой опыт разработки в основном строится вокруг разнообразных сетевых cервисов под Windows и Linux. Я обычно стремлюсь добиться максимальной кроссплатформенности вплоть до бинарной совместимости. И конечно, накопилось некоторое количество стабильных решений связанных с логированием.

Топик написан как продолжение к этой статье и будет полезен в первую очередь начинающим программистам.

Здесь я собираюсь осветить следующие вопросы:
  • Внутреннее свойство логгера и примеры софта который его использует.
  • Объемы, уровни и детализация сообщений лога.
  • Общие правила конфигурации в разработке, в бою и в расследовании.

Читать дальше →
Total votes 33: ↑29 and ↓4 +25
Views 108K
Comments 18

Логирование — производительность молчания

.NET *
В обсуждениях этой статьи, возникло наконец у меня желание оценить в цифрах скоростные характеристики API логгеров.

Решил провести сравнение задержек при использовании логгеров NLog и Log4Net, а также осветить немного общих вопросов по замерам производительности участков кода в .Net и Mono.

Читать дальше →
Total votes 22: ↑20 and ↓2 +18
Views 9.9K
Comments 13

Как я изобретал велосипед, изучая технологии

C# *
Sandbox
Неоднократно слышал утверждение, что язык программирования изучать лучше всего в процессе создания чего-либо. Не мог с этим не согласиться, и решил, что это распространяется не только на язык, но и на всякие технологии сосуществующие с этим языком.
Протаптывать неизведанную дорожку самому непросто, гораздо легче изучить, как кто-то протаптывает эту дорожку перед тобой. К изучению документаций у меня не лежит душа, ей я пользуюсь как справочником, а изучать что то с нуля отнимает слишком много времени и сил, так как авторы оной обычно предполагают, что у читателя знания обширнее, практически все что нужно он уже знает. Велосипедные темы же освещают именно процесс обучения, хождение по граблям и все прочее. К сожалению, на интересные мне темы достаточно подробных статей не нашел, изучал урывками, и решил все-таки написать статью сам, в надежде упростить жизнь тем, кто может пойти следом.
Далее
Total votes 18: ↑15 and ↓3 +12
Views 27K
Comments 6

Окно сообщения об ошибке для WinForms и WPF приложений

Programming *.NET *
Tutorial

Приветствую!

В статье посвященной моему профайлеру для Entity Framework-a, я вкратце описал примененную мной форму для сообщения пользователю об исключительной ошибке в приложении. После оценки количества скачиваний примера кода, было решено выделить этот пример в отдельный проект, а также добавить поддержку WPF приложений.
Исходники библиотеки вместе с примерами опубликованы на CodePlex под свободной лицензией MIT: https://uiexceptionhandler.codeplex.com/

Подробности под катом.
Читать дальше →
Total votes 33: ↑25 and ↓8 +17
Views 18K
Comments 34

Некоторые аспекты логирования ASP.NET-сайта

.NET *ASP *
Здравствуйте!

Сегодня я расскажу, как сделаны некоторые аспекты логирования в сайте, в разработке которого я принимаю участие.

Сайт написан на ASP.NET MVC 5 и Web API 4, для логирования используется библиотека NLog, сайт хостится в облаке Амазона. Записи лога пишутся в три места (target по терминологии NLog): в файловую систему (подпапку Logs папки App_Data, в которую разрешается доступ на запись при стандартных настройках деплоя Amazon Elastic Beanstalk), на сервис logentries и в БД. Записи лога за день ведутся в отдельный файл, в названии которого указывается текущая дата.
Читать дальше →
Total votes 23: ↑20 and ↓3 +17
Views 20K
Comments 19

MS Dynamics CRM и PostSharp

CRM systems *
Приветствую, Уважаемые Хаброчитатели

В данной статье хочу поведать о результатах моих исследований относительно применимости PostSharp к MS Dynamics CRM в плане логирования.
Читать дальше →
Total votes 5: ↑4 and ↓1 +3
Views 4.1K
Comments 3

Расширение NLog для мониторинга ошибок

Programming *.NET *C# *DevOps *
Sandbox
Не было ли у вас мысли, что исправлять ошибки пользуясь лог-файлом не очень эффективно?

Хотите исправлять ошибки быстрее и проще?

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


Читать дальше →
Total votes 15: ↑12 and ↓3 +9
Views 18K
Comments 176

NLog: правила и фильтры

.NET *
Translation

NLog: правила и фильтры


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

Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Views 30K
Comments 7

Быстрое логгирование

.NET *
Recovery mode
Translation

В этой статье я поместил бенчмарки наиболее частных вызовов логгеров. Все эксперименты я проводил над log4net и NLog, на Windows 10 x64 Intel с M.2 SSD.


Сырые результаты можно посмотреть на GitHub. В том же репозитории код (для запуска потребуется .Net 4.7.2 + Microsoft Visual Studio 2017+).


Что, как и почему — под катом.

Читать дальше →
Total votes 7: ↑5 and ↓2 +3
Views 4.2K
Comments 5

Типичные ошибки при логгировании

High performance *Java *Perfect code *.NET *Kotlin *
Recovery mode
Translation

Привет, Хабр!


Я думаю, практически в каждой программе есть логгирование. Более того, в ряде уже неновых приложений (а значит с морем нетривиальных условий) зачастую логи становятся жизненно важными на боевом сервере.


Однако, несмотря на всю важность и распространенность подобной технологии, я заметил, что люди зачастую совершают стандартные ошибки при работе с ними. Эта статья во многом описывает поведение .Net, однако я сделал небольшие вставки из Java мира, просто чтобы было сравнение.

Читать дальше →
Total votes 15: ↑13 and ↓2 +11
Views 8.7K
Comments 22

Использование Graylog и NLog для сбора логов от приложений на C#. Личный опыт

Programming *.NET *C# *Software

КДПВ

Хабр, приветствую!

Описанное ниже ни в коем случае не tutorial или best practice. Я решил всего лишь агрегировать и задокументировать свои достижения в поставленном вопросе.

Надеюсь, содержимое данной статьи позволит ищущим информацию по логированию почерпнуть что-то новое или принять какое-либо решение. И, само собой, надеюсь получить конструктивный фидбек от сообщества. Это даёт шанс делать что-то лучше.
Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Views 15K
Comments 39

Как использовать свойство Exception.Data, чтобы логировать дополнительные сведения об исключениях

Programming *.NET *Debugging *C# *

Привет! Я Антон Антонов, Full Stack Developer. Расскажу, что помогает мне исправлять ошибки в коде.

Читать далее
Total votes 12: ↑12 and ↓0 +12
Views 3.3K
Comments 0

Шаблон приложения Asp .Net Core 6 Web API с предустановкой и настройкой необходимых инструментов

Programming *.NET *Visual Studio *C# *Development for Windows *
Tutorial

Обычно моя работа связана с разработкой функционала REST веб-сервисов. Чаще всего, разработка эта ведется на базе уже существующих приложений, созданных и настроенных ранее по шаблону Web API в VisualStudio. Создавать новые приложения приходится не часто, последнее созданное мной, было еще на .NET Core 3.1, поэтому, когда возникает подобная задача, приходится тратить время на повторное изучение технологий первоначальной настройки приложения, чтобы оно отвечало всем требованиям бизнес-процесса компании, в которой я работаю. Столкнулся с этой задачей накануне, решил создать шаблон приложения (ссылка на репозиторий GitHub), в котором уже все настроено и готово. Краткое описание процесса привожу в этой статье. Постарался разбить сам процесс на независимые блоки, чтобы для реализации одного из них не приходилось изучать другие. Намеренно подробно освящаю настройку базовых функции, не вдаваясь в описание принципа работы той или иной функции - для более глубокого понимания привожу ссылки на документацию, по которой учился сам. Статья моя будет полезна для новичков в качестве отправной точки для изучения тех или иных функций .Net Core 6, а так же для специалистов, которые как и я, сосредоточены на реализации бизнес-логики приложения и требуется сократить время восстановления в памяти технологии его первоначальной настройки.

Читать далее
Total votes 14: ↑8 and ↓6 +2
Views 4.3K
Comments 5