Hi!
Starting by "where" :
The where mainly depends on the way you decide to do the log , one for all the entities or one for each entity or group of entities defined in the same eSpace.
If you choose the option "one for all the entities" , my option would be to define the "LOG entity" in a separate eSpace and try to create some actions that would be call from each CRUD action in the application to build and save the change. This option has the advantage of keeping all the info in the same place and the web blocks used to retrieve it can be the same through all the application. The big disadvantage is the fact that using in it any entity from the application will end up in a circular reference and to avoid that the id´s from the records changed kept in the LOG entity have to be integers and no relationship can be establish between the LOG entity and the other entities in the application.
If you choose one LOG entity per entity or eSpace, the screens and Web blocks, actions to load the information or to retrieve it have to be adapted to each LOG entity and cross information between LOG entities has to be considered carefully.
Best regards
Graça