Мониторинг статистики использования Как это делается?

Windows, Firefox или Google Chrome отслеживают статистику использования и анализируют отправляемые им отчеты о сбоях. Я думаю о реализации той же функции в моем приложении.

Конечно, легко засорить приложение большим количеством операторов ведения журнала, но я хочу избежать этого подхода, потому что я не хочу, чтобы в моем коде было слишком много сквозных операций в функции. Я думаю об использовании АОП для этого, но прежде я хочу узнать, как другие люди реализуют эту функцию.

У кого-нибудь есть предложения?

Уточнение: я работаю над настольным приложением и не использую СУБД.


person Graviton    schedule 17.12.2008    source источник


Ответы (3)


У Джоэла была статья в блоге о чем-то подобном — его ловушка приложений падает, а затем связывается с его сервером с некоторым набором деталей. Я думаю, он проверяет дубликаты и выбрасывает их. Это отличная система, и я был впечатлен, когда прочитал ее.

http://www.fogcreek.com/FogBugz/docs/30/UsingFogBUGZtoGetCrashRep.html

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

person Tim    schedule 17.12.2008

В "Отладке приложений .Net 2.0" Джон Роббинс (из Wintellect) много пишет о том, как генерировать и отлаживать отчеты о сбоях (фактически мини-дампы Windbg/SOS). Его класс Superassert содержит код для их создания. Однако будьте осторожны - для правильной настройки требуется много усилий: серверы символов, исходные серверы, а также хорошее знание VS2005 и windbg. Его книга, однако, проведет вас через этот процесс.

Что касается статистики использования, я часто привязывал ее к авторизации, т.е. имеет ли пользователь право выполнять определенную задачу. Проще говоря, это может быть такой метод (ApplicationActions - это перечисление):

public static bool HasPermission( ApplicationActions action )
{
    // Validate user has permission.
    // Log request and result.
}

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

person ng5000    schedule 17.12.2008

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

http://msdn.microsoft.com/en-us/library/cc309506.aspx

person Brian Rudolph    schedule 17.12.2008
comment
EL это мусор, избегайте его любой ценой - person Greg Dean; 18.12.2008
comment
Вау, это довольно необоснованное утверждение. Я согласен с тем, что многие из блоков приложений почти бесполезны, но некоторые из них имеют свои достоинства. - person Brian Rudolph; 18.12.2008