2008-10-23 1 views
5

Просто интересно, сколько людей регистрируется в своих приложениях ???Сколько нужно регистрировать в приложении и сколько стоит?

Я видел это:

«Я обычно люблю использовать журнал регистрации ошибок уровень для входа каких-либо исключений, которые пойманы приложения я буду использовать уровень журнала INFO как.» Первый уровень» схемы отладки, чтобы показать, когда я войти или выйти из метода. Оттуда я использовать уровень журналирования DEBUG для трассировки подробной информации. фатальный журнал уровня используется для каких-либо исключений, которые мне не удалось поймать в моем веб-сайт приложений ".

имевших этот образец кода с ним:

Public Class LogSample 

    Private Shared ReadOnly Log As log4net.ILog = log4net.LogManager.GetLogger(GetType(LogSample)) 

    Public Function AddNumbers(ByVal Number1 As Integer, ByVal Number2 As Integer) As Integer 

     Dim intResults As Integer 

     Log.Info("Starting AddNumbers Method...") 
     Log.Debug("Number1 Specified: " & Number1) 
     Log.Debug("Number2 Specified: " & Number2) 

     intResults = Number1 + Number2 

     Try 

     intResults = Number1 + Number2 

     Catch ex As Exception 

     Log.Error("Error Adding Nubmers.", ex) 

     End Try 

     Log.Info("AddNumbers Method Complete.") 

     Return intResults 

    End Function 

End Class 

Но это только кажется, добавить столько к методу. Например, класс, который обычно может быть, может быть, 7 строк кода, внезапно становится 12 строками кода. Метод также теряет часть своей ясности и простоты.

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

Поэтому мне интересно, что делают люди? Приветствия Энтони

+0

http://stackoverflow.com/questions/163385/logging- conventions – 2008-10-23 23:51:38

ответ

3

Вы правы, что это делает код более трудным для чтения и обслуживания. Одна из рекомендаций - рассмотреть возможность использования инструмента AOP (Aspect oriented Programming), чтобы отделить логику регистрации от вашей логики приложения. Замок Виндзор и Весна - это два, которые приходят в ум в сообществе .Net, которое вы можете исследовать.

0

Из системы безопасности tandpoint logging может быть интересной темой. Я написал blog entry на CSO Online некоторое время назад после нескольких DDOS-атак. Это раздел, где я говорил о регистрации событий, надеюсь, что это помогает немного:

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

3

Это больше art сторона программирования.

Вы не хотите регистрировать все. Но вы захотите зарегистрировать наиболее важные части системы.

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

Для начала все основные логические модули вашего приложения должны иметь функции ведения журнала. Декоративные детали, например. UI/анимация не нужна регистрация.

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

Для обеспечения эффективности используйте профилировщик .

+0

Logging - это автономный профилировщик. У вас может не быть ничего, кроме этого. – 2016-11-22 16:27:18

3

... эй, я получаю значок для цитирования темы в вопросе SO? 8^D

Но, серьезно, хотя я хочу пояснить, что комментарий о регистрации выше, это то, что часть моего обоснования для «подробного» ведения журнала основана на том факте, что я использую функции самого log4net.

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

Что произойдет, если ответ будет недоступен? Log4net позволяет мне обновлять файл конфигурации (нет необходимости в повторной компиляции, нет необходимости получать доступ к специальному системному файлу на веб-сервере с одобрением sysadmin) и переходить в режим INFO. Теперь вы начинаете видеть второй уровень ведения журнала. Возможно, код никогда не попадал в определенный цикл. Возможно, поиск данных имел пустой набор записей. Этот второй уровень отладки полезен, и журнал только немного больше. Как только это будет сделано, я смогу снова изменить конфигурацию и вернусь к протоколу освещения.

Естественно, если ситуация ДЕЙСТВИТЕЛЬНО сумасшедшая, то я иду на полный уровень отладки, и я хочу знать, что каждая переменная сообщает, с какими DataRows я занимаюсь и что происходит в приложении. На моем текущем месте работы у нас нет возможности удаленной отладки в наших веб-приложениях, и мы не можем всегда использовать производственную базу данных без потенциального увеличения данных, поэтому полная отладка - это лучшая вещь.

Я согласен с большинством людей, что чрезмерное ведение журнала может действительно сбить приложение и вызвать больше проблем, чем того стоит. Если бы не рекомендовал этот вид подробного ведения журнала в приложении, либо, если приложение не гарантировало его по соображениям безопасности. Тем не менее, имея возможность использовать подробные протоколирования при необходимости и без необходимости перекомпилировать мой код ЯВЛЯЕТСЯ ОГРОМНЫМ преимуществом, и, если у вас есть фреймворк, который может легко его разрешить (например, log4net), то я говорю, verbose, и достаточно легко мысленно отфильтровать ссылки на код журнала, если вам нужно вернуться в сам код.

Прошу прощения, если я озвучиваю оборонительные или разглагольствования, я не имею в виду это ни в каком отношении. Я просто хотел предоставить немного больше информации о том, как и почему я настраиваю logging, используя log4net в упомянутом методе. 8^D

+0

Эй, парень ... возьмите его как дополнение, которое я использовал в качестве источника. Отличная статья, кстати, и это заставило меня переосмыслить некоторые вещи, не считайте это плохим. – vdhant 2008-10-23 23:50:04

0

На минимальном минимуме вы должны регистрировать ошибки и вызовы внешнего компонента ... Образец, который вы предоставляете, - это то, что я бы назвал TOO большим количеством записей ... Нет смысла регистрировать, что вы находитесь в начало метода, или в конце метода, или даже параметры, которые были переданы методу ... Его трата дискового пространства, файл журнала будет очень большой в кратчайшие сроки ...

RWendi

0

Это не так легко решить, сколько протоколирования достаточно. Слишком много кода регистрации в функции, как в вашем примере, зарывает реальный логический код. Слишком много записей журнала заставляет журнал шумно. Но слишком мало журналов не очень полезно!

Для .NET вы можете использовать библиотеку AOP, PostSharp, чтобы помочь регистрировать ввод и выход из функции вместе со значениями аргументов и т. Д.

Для помощи с определением, сколько зарегистрируют ваше заявление, проверить эту статью "System Logging and Log Analysis "Маркус Ranum.

Надеется, что это помогает.

Смежные вопросы