ASP.NET MVC: журналы доступа

Как лучше всего реализовать ведение журнала доступа на веб-сайте ASP.NET MVC? Я хочу ответить на следующие вопросы:

  1. Какие страницы самые популярные?
  2. Какие страницы были просмотрены за последние 24 часа?
  3. и т.п.

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

Как лучше всего это сделать? Нужно ли мне:

  1. Добавить трассировку ко всем методам моего контроллера?
  2. Добавьте IHttpFilter (или что-то еще) и сделайте так, чтобы он регистрировался?
  3. Настроить IIS (IIS7 в Windows 2008) для входа в таблицу в моей базе данных, а затем определить сопоставление NHibernate для этой таблицы?
  4. Что-то другое?

person Roger Lipscombe    schedule 25.01.2009    source источник


Ответы (4)


вот альтернативный подход: http://code-inside.de/blog-in/2008/04/17/aspnet-mvc-using-a-actionfilter-for-logging/

person Sebastian    schedule 25.01.2009

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

person Craig Stuntz    schedule 26.01.2009
comment
Конечно, это делает сайт более зависимым от внешних факторов. Что происходит, когда/если MVC переносится на Mono? Просто мысль. - person Kieron; 26.01.2009
comment
Ну, я думаю, это правильно. Ни самостоятельные действия, ни использование встроенного функционала не решат всех проблем. У каждого есть свои преимущества и недостатки. Вот почему я проголосовал за ответ Себастьяна, а также написал свой собственный. :) - person Craig Stuntz; 26.01.2009

Почему бы просто не использовать [Google Analytics]?(http://www.google.com/analytics/) На мой взгляд куда более простой способ получить эту статистику. Кроме того, вы получите массу бонусной информации. Не говоря уже о том, что у вас есть доступ к нему в любой точке мира.

person SpoBo    schedule 26.01.2009

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

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

person Andrei Rînea    schedule 07.02.2009