The company I work for is redesigning our application in .NET. Our application is sold using the Software as a Service model.
We track all of our users actions in the software for reporting purposes (searching for things, downloading assets, completing forms, what is associated with the form they are creating, snap shot of the user's profile and details upon login, etc). Previously we had written a very robust tracking logic to complete all these details in our old application.
Before I complete this initial redesign in the .NET application I wanted to know if anyone has recommendations of off the shelf tracking solutions or open source tracking systems they have implemented in the past that are fairly robust.
Additional Details: We have a lot of custom data (specific to our application) that needs to be tracked and our application is only accessed via company intranet sites so details on where people are coming from is not needed as we already know this.
I am planning on tracking page hits so a user's visit can be recreated if necessary.
EDIT (11/20/2009): There does not appear to be exactly an off the shelf solution to fit my problem but I'll be updating this question with a design and direction we are going to implement in the next couple of weeks. So if you are interested in what happened with this question then check back soon.