我现在要细化系统日志,原先是有一张表来存操作日志的,在一些步骤操作后用存储过程来记录日志,原先的系统记录不够详细,如修改商品就记录日志内容是 :“修改商品:+商品名” ,如图:其余谁修改、修改时间、修改人、IP等等都有记录,这样就是日志内容太过简单了,不知道是修改了商品的那些内容。现在我细化成,日志内容包含有原来的值,修改后的值,如图:
我是在商品修改存储过程中,在执行UPDATE之前记录商品的原来属性值,UPDATE后也记录修改后的值,再一起写入到日志。困惑就是 商品的属性太多 ,都这样做法的话,代码量多,调用执行记录存储过程次数也多 , 那修改商品的操作执行慢, 求教各位大神 ,有没有好的解决办法?
在业务层写代码,不要在存储过程里写恶劣的业务逻辑。
你这里的需求其实非常简单,修改前和修改后的商品是两个对象,属性不同的都筛选出来,然后构造日志信息对象,调用日志服务进行一次批量写入即可
用业务层写,使用orm来实现,对需要记录的或已经变更的,通过配置来实现。
写到存储过程里, 也不复杂, 在begin后, 根据传入的id取到记录保存到临时表, 更新完记录再把新值和临时表里的旧值一起分析下, 进日志表。 不就万事大吉了……。
我也想这样做,就是考虑,修改的属性一多,到时sql执行慢,调用修改一个商品,服务器压力大,反应慢,请问有这样的影响吗?
@米字格: web服和数据服是独立的吗? 如果有单独的web服, 修改次数非常多, 建议还是放在web服上, 写在业务层。 如果就一台服务器, 就不用犹豫,按我说的做。 等慢的时候再优化表。
另外, 像你这种日志, 一般是什么角色看? 如果是自己人看, 直接建个触发器得了, Update触发器。 整条记录都保存。 这样代码最少。 商品表修改一次记一次。
@问天何必: 是单独的服务器的,这个是系统分角色的,一般是超级管理员查看的