How to store all the user's activities in a website ..?


I have a web application build in Django + Python that interact with web services (written in JAVA).

Now all the database management part is done by web-services i.e. all CRUD operations to actual database is done by web-services.

Now i have to track all User Activities done on my website in some log table.

Like If User posted a new article, then a new row is created into Articles table by web-services and side by side, i need to add a new row into log table , something like "User : Raman has posted a new article (with ID, title etc)"

I have to do this for all Objects in my database like "Article", "Media", "Comments" etc

Note : I am using PostgreSQL

So what is the best way to achieve this..?? (Should I do it in PostgreSQL OR JAVA ..??..And How..??)

So, you have UI <-> Web Services <-> DB

Since the web services talk to the DB, and the web services contain the business logic (i.e. I guess you validate stuff there, create your queries and execute them), then the best place to 'log' activities is in the services themselves.

IMO, logging PostgreSQL transactions is a different thing. It's not the same as logging 'user activities' anymore.

EDIT: This still means you create DB schema for 'logs' and write them to DB.

Second EDIT: Catching log worthy events in the UI and then logging them from there might not be the best idea either. You will have to rewrite logging if you ever decide to replace the UI, or for example, write an alternate UI for, say mobile devices, or something else.