Трассировка против логирования и как вписывается log4net?

Мне интересно, в чем разница между ведением журнала и трассировкой.

Разница в основном в том, что трассировка - это более подробный журнал, дающий разработчикам инструмент для отладки приложений во время выполнения?

Я экспериментировал с log4net и делал логи. Теперь мне интересно, должен ли я также выполнять трассировку и могу ли я / должен использовать log4net для этой цели. Должен ли я выполнять трассировку с log4net и есть ли какой-то уровень трассировки для логгеров log4net? Должен ли я использовать другой уровень журнала для целей отладки или трассировки, или можно использовать один и тот же? Можете ли вы привести простой пример того, как я буду вести логи и трассировку для простого метода?

Изменить: Несмотря на несколько полезных ответов ниже, я все еще не уверен, как я должен делать трассировку, а не ведение журнала.

У меня есть следующий метод на моем бизнес-уровне, и я хочу добавить в него логирование / трассировку. Мне интересно, как это сделать эффективно. Является ли следующий метод приемлемым с точки зрения регистрации / отслеживания? Должны ли сообщения журнала иметь тип Info вместо Debug? Считаются ли отладочные сообщения, которые я записываю, трассировкой? Как бы вы изменили это?


IEnumerable GetCars()
{
   try
   {
      logger.Debug("Getting cars");
      IEnumerable cars = CarAccessor.GetCars().ConvertAll(DataAccessToBusinessConverter);
      logger.Debug("Got total of " + cars.Count + " cars"); 
   } catch (Exception e) {
      logger.Error("Error when getting cars", e);
      throw new Exception("Unexpected error when getting cars");
   }
}

Ответы на вопрос(7)

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

log4net хорошо подходит для обоих. Мы различаемS полезен для пост-релизной диагностики и "трассировка» для целей разработки с использованием уровня ведения журнала DEBUG. В частности, разработчики регистрируют свои результаты трассировки (вещи, которые представляют интерес только во время разработки), используяDebug(), Наша конфигурация разработки устанавливает уровень DEBUG:


        
        ...

Перед выпуском продукта уровень меняется наИНФОРМАЦИЯ":


Это удаляет все выходные данные DEBUG из журнала релизов, но сохраняет INFO / WARN / ERROR.

Существуют и другие инструменты log4net, такие как фильтры, иерархическое (по пространству имен) ведение журнала, несколько целей и т. Д.Мы нашли вышеупомянутый простой метод довольно эффективным.

 Bob Nadler05 окт. 2008 г., 22:37
Большую часть времени я думаю, чтоэто правда. Существуют специализированные ситуации, например отслеживание интерфейсов устройств в реальном времени, когда универсальный инструмент, такой как log4net, может быть не лучшим выбором. Кстати: мы используем DEBUG, потому что этос предопределенным уровнем. Вы также можете определить свой собственный уровень (уровни): например, TRACE
 Xerx05 окт. 2008 г., 21:23
Итак, я понимаю, что разница между трассировкой и журналированием - это просто эстетическая разница записей журнала в уровне отладки.

скажу да. Регистрация - единственный способ определить, что произошло в прошлом - если клиент звонит и говорит что-то не сделалвсе может произойти, как и ожидалось, без журнала все, что вы можете сделать, это пожать плечами и попытаться воспроизвести ошибку. Иногда это невозможно (в зависимости от сложности программного обеспечения и зависимости от данных клиента).

Существует также вопрос ведения журнала для аудита, можно записать файл журнала, содержащий информацию о том, что делает пользователь, - так что вы можете использовать это, чтобы сузить возможности для устранения проблемы или даже для проверки пользователя.s претензий (если вы получили сообщение о том, что система сломана, xyz не сделалЭто может произойти, вы можете посмотреть в журналах, чтобы узнать, не удалось ли оператору запустить процесс или ненажмите правильный вариант, чтобы он заработал)

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

Если вы можете настроить вывод журнала, поместите все в журналы и уменьшите или увеличьте объем записываемых данных. Если вы можете изменить уровень выходного сигнала динамически, то этоотлично.

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

 Jonas Stensved02 апр. 2012 г., 15:36
+1. Согласен. Много раз ты недаже клиент звонит. Просто анонимные веб-пользователи получают ошибку и покидают сайт навсегда. Затем это'необходимо следить за журналами, чтобы даже знать тамОшибка в приложении.

подумайте, какая информация регистрируется или отслеживается. Это особенно верно для чувствительной информации.

Например, в то время как вообще может быть нормально регистрировать ошибку, заявляющую "

Пользователь 'X' попытался получить доступ, но был отклонен из-за неправильного пароля ",

это не нормально регистрировать ошибку, заявляющую "

Пользователь 'X' попытался получить доступ, но был отклонен из-за паролясекрет» не является правильным."

Этоможет быть допустимо записать такую чувствительную информацию в файл трассировки (и предупредить клиента / пользователя об этом фактом с помощью "некоторые средства прежде чем попросить его включить трассировку для расширенного поиска неисправностей в производстве). Однако для ведения журнала у меня всегда есть политика, что такая чувствительная информацияникогда быть написанным (т.е. уровни INFO и выше в log4net говорят).

Конечно, это должно выполняться и проверяться обзорами кода.





Вход долженне быть разработанным для отладки разработки (но это неизбежно используется таким образом)

Ведение журнала должно быть рассчитано наэксплуатационный мониторинг и устранение неисправностей - это его смыслТре.



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



Учитывая это, наиболее успешные подходы явидел (и проектировал / реализовывал) в прошломне объединить два вместе. Лучше держать два инструмента отдельно, каждый из которых выполняет одну работу как можно лучше.

Ведение журнала - это общий термин для записи информации, а трассировка - это особая форма ведения журнала, используемая для отладки.

В .NET объекты System.Diagnostics.Trace и System.Diagnostics.Debug позволяют вести простой журнал для рядаслушатели событий " что вы можете настроить в app.config. Вы также можете использовать TraceSwitches для настройки и фильтрации (например, между ошибками и информационными уровнями).

private void TestMethod(string x)
{
    if(x.Length> 10)
    {
        Trace.Write("String was " + x.Length);
        throw new ArgumentException("String too long");
    }
}

В ASP.NET есть специальная версия Trace (System.Web.TraceContext), которая записывает в конец страницы ASP или Trace.axd. В ASP.NET 2+ также имеется более полная структура ведения журнала, которая называется Health Monitoring.

Log4Net является более богатым и гибким способом отслеживания или ведения журнала, чем встроенная трассировка или даже мониторинг работоспособности ASP. Как и Diagnostics.Trace, вы настраиваете прослушиватели событий ("appenders») в конфиге. Для простой трассировки, использование просто, как встроенная трассировка. Решение использовать Log4Net - есть ли у вас более сложные требования.

private void TestMethod(string x)
{
    Log.Info("String length is " + x.Length);
    if(x.Length> 10)
    {
        Log.Error("String was " + x.Length);
        throw new ArgumentException("String too long");
    }
}
 ronaldwidha21 апр. 2010 г., 10:37
Это'Вероятно, стоит отметить, что Log4Net имеет log4net.Appender.TraceAppender, который выводит в окно вывода Visual Studio так же, как класс Trace.

ведение журнала! = отладка

Иногда хранение лог-файлов необходимо для решения проблем с клиентом, они доказывают, что произошло на стороне сервера.

Ваш ответ на вопрос