Before you decide how you're going to produce the metrics you require, you should define what metrics you require and then start investigating solutions to use.
IIS logs will certainly tell you what pages have been visited, but given the postback nature of asp.net (unless you're referring to an asp.net mvc application), it won't give you information regarding "which button" has been pressed. If you need that level of information you're ultimately going to have to log some data somewhere. A database is almost certainly the best bet as it's then very easy to write SQL queries to mine the data. The downside is that you'll need to add calls to your logging routine in each place that you care about gathering data.
One thing to bear in mind is the volume of data that you're logging and how you manage it. If you log too much, or have no archival/clear-out plan, you could find that you end up with more log data than application data which can pose a problem if the application is used heavily by a large number of users. I've seen, more than once, tables called ProcessLog
or Trace
that contain more data than the rest of the system combined.