First you need to decide what to save. Try log in each user action seems unfeasible. Monitoring his movements can be useful to analyze the use of the interface and how is the experience, but it should be used at a specific time and if there is someone who will know how to analyze the data.
Log of use, which is called audit in question, should record only what actually generates effect on the system. Even because wrong user actions should not generate errors in the application. If this occurs the error is from the programmer and needs to solve.
Is going log in what is written in the database, the best place to store the log is the database. I see no problem in doing this. Unless the application has architecture problems, but there is another problem. If you think you have a problem, demonstrate this. It doesn’t necessarily have to be in the same database.
It has several advantages in using the database. It has some advantages in using a text file on the server side.
Do not forget that storing the data on the client side, even more in plain text, leaves the system vulnerable. If the user makes a mistake he will try to delete this.
The client side must be responsible for the user interface and nothing else. Business rules should be guaranteed or generate specific criticism if it is flexible. This should be done either in the database, or in the application, but on the server, not in the interface.
If you have the right architecture the process of log becomes almost transparent. You can even be 100% transparent with the right tools, although you can decrease the quality of information in some cases.
As post specific questions evolve.
Ah, auditing is the process of analysing logs.