Трассировка по сравнению с Входом и как log4net вписывается?

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
49
задан razlebe 15 June 2011 в 22:22
поделиться

7 ответов

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

В.NET Система. Диагностика. Трассировка и Система. Диагностика. Объекты отладки позволяют простой вход многим "слушателям события", которых можно настроить в 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, существует специальная версия Трассировки (Система. Сеть. TraceContext), будет записи к нижней части ASP-страницы или Trace.axd. В ASP.NET 2 +, существует также более полная платформа журналирования, названная медицинским Контролем.

Log4Net является более богатым и более гибким способом проследить или зарегистрироваться, чем встроенная Трассировка, или даже медицинский Контроль ASP. Как Диагностика. Трассировка Вы настраиваете слушателей события ("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");
    }
}
26
ответ дан Peter Mortensen 7 November 2019 в 11:52
поделиться

IMO...

Вход должен не быть разработанным для отладки разработки (но это неизбежно привыкает тот путь)
, Вход должен быть разработан для операционный контроль и поиск и устранение неисправностей - это - его разум d’être.

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

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

13
ответ дан Kevin Little 7 November 2019 в 11:52
поделиться

log4net хорошо подходит для обоих. Мы дифференцируемся между входом, это полезно для диагностики после выхода и "прослеживающий" в целях разработки при помощи уровня входа ОТЛАДКИ. А именно, разработчики регистрируют свою трассировочную информацию (вещи, которые только представляют интерес во время разработки), использование Debug(). Наша настройка разработки устанавливает Уровень для ОТЛАДКИ:

<root>
        <level value="DEBUG" />
        ...
</root>

, Прежде чем продукт выпущен, уровень изменяется на "ИНФОРМАЦИЮ":

<level value="INFO" />

Это удаляет весь вывод ОТЛАДКИ из входа выпуска, но сохраняет ИНФОРМАЦИЮ/ПРЕДУПРЕЖДАТЬ/ОШИБКУ

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

11
ответ дан Bob Nadler 7 November 2019 в 11:52
поделиться

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

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

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

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

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

4
ответ дан gbjbaanb 7 November 2019 в 11:52
поделиться

вход! = отладка

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

0
ответ дан Karl 7 November 2019 в 11:52
поделиться

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

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

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

не нормально регистрироваться, ошибка при утверждении

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

Это могло бы быть приемлемым записать такую чувствительную информацию в файл трассировки (и предупредить клиента/пользователя о том факте "некоторыми средствами", прежде чем Вы попросите, чтобы он включил трассировку для расширенного поиска и устранения неисправностей в производстве). Однако для входа, у меня всегда есть он как политика, которая такая чувствительная информация никогда , чтобы быть записанной (т.е. ИНФОРМАЦИЯ об уровнях, и выше в log4net говорят).

Это должно быть осуществлено и проверило обзоры кода, конечно.

0
ответ дан Christian.K 7 November 2019 в 11:52
поделиться

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

8
ответ дан 7 November 2019 в 11:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: