我正在开始一个新的应用程序,并想知道最好的日志记录方法是什么。数据库中的某些表需要记录每个更改,以及进行更改的用户。其他表可能只需要记录最后修改时间。
在以前的应用程序中,我使用了不同的方法来做到这一点,但希望听到别人做过的事情。
我尝试了以下内容:
您使用哪种方法并建议使用?
记录删除数据的最佳方法是什么?我从不喜欢用户可以永久删除数据库中的记录的想法,所以通常我有一个布尔字段'已删除',当删除它时会更改为true,然后它将从模型级别的所有查询中过滤掉。还有其他任何建议吗?
最后一个..记录用户活动的最佳方法是什么?目前我有一个表记录登录/注销/密码更改等,并根据操作的不同,给它一个代码1,2,3等。
希望我没有在这个问题上挤满太多。感谢。
答案 0 :(得分:1)
我知道这是一个非常老的问题,但是我想添加更详细的答案,因为这是我第一次搜索有关数据库日志的链接。
基本上有两种记录数据更改的方法:
-在服务器层上
-在数据库层上。
如果可以的话,只需在服务器端使用登录即可。它更加清晰和灵活。
如果您需要登录数据库层,则可以使用触发器,如@StanislavL所说。但是触发器会降低数据库性能,并限制您将更改日志存储在同一数据库中。
此外,您还可以查看事务日志监视。 例如,在PostgreSQL中,您可以使用逻辑复制机制将json格式的更改从数据库流传输到任何地方。
在单独的服务中,您可以接收,处理和记录任何形式和任何数据库中的更改(例如,仅将json放入Mongo)
答案 1 :(得分:0)
您可以将触发器添加到任何跟踪的表格以进行插入/更新/删除。在触发器中,只需检查NEW和OLD值,并将它们写入带有列
的特殊表中table_name
entity_id
modification_time
previous_value
new_value
user
如果您在收听的表格中添加changed_by
列,很难找出进行更改的用户。