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.
The values you acquire with user tracking helps you to identify the performance of the steps in your user experience. Basically, you can better understand how people interact with pages on your website or your application screens.
User behavior analytics (UBA) is a method of tracking, collecting, and analyzing quantitative and qualitative user data to understand how and why users interact with a product or website.
Well... there are really three different types of tracking (loggin) levels that you mentioned and different tools for each.
In your post you mention:
Tracking the pages the users visits: To me this would be a function of the web server. IIS (I assume IIS because you said it is .Net) will log all this stuff for you. There are several tools to mine that information.
Business transactions: Suff like, the user printed a report. The user ran a process, etc. These aren't really always specific to any data changing. Using a tool like log4net and an IoC container to inject this type of logging into your business objects would work well.
Data modifications: This is data level tracking. There are several ways to do this. But, I would recommened putting it close to the data base. It is probably a bit easier to do it in the DAL but what if someone changes data in the database outside of the application. Of course that may not be possible in your case. I have seen this done with triggers. But, SQL 2008 added change tracking inbuilt.
So, I would say you need a combination of all three tools. Perhaps you can consolidate all the data into a single table or two to simplify viewing and mining it.
Our company uses log4net for tracking users actions. We also have actions inserted into the database for any action a user takes on our applications. With log4Net you can get pretty granular in what you log and where it logs. here is a direct link download of their binaries for version 1.2.10 (latest as of today). Once you have it configured, it is really easy to use and log information.
Hope this helps,
Scott
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With