要做一个系统,要求系统内的每一步操作,每一个数字的添加修改删除都要记录到'日志'系统内,并且以最友好的界面给客户看。以前做都是直接把模块名,表名和sql语句记录进去就完了,现在这种要求脑子有点乱。因为系统比较复杂,其中还有ajax的一些东西的选择操作。假如不用sql形式记录,真不知道怎么做才好。请高手给个思路吧。谢谢了~~~~~~~~~~

解决方案 »

  1.   

    直接就是每当进行insert、update、delete的时候就将你想记录的信息插入到数据库不就行了么?
      

  2.   

    最友好的界面给客户看
    /*******************/
    这个是你需要保留什么数据和如何呈现的问题
    觉得乱那是因为没有好好整理插入日志数据的问题吧 哪些需要的整理一下 考虑全面点 数据呈现的时候在好好问问客户到底关心哪些 做有的放矢的select
      

  3.   

    界面还好说了。我说的是实现思想。1楼的没看懂,如果记录,insert,update,delete我早就做了。 客户又不懂sql,他的员工执行了错误的操作,要以在哪个模块,哪天,哪个员工,哪个字段,原值,新值这种思想来做日志系统,就不能像以前一样记录sql.而好多产品的表都是多对多的关联关系做的数据库结构...所以才头疼.
      

  4.   

    按我简单的理解,给各模块的关键步骤起个操作名字,记录一下该操作名,时间,用户,IP等就完了。
    难道楼主要做的不仅仅是log,还得根据log做回滚操作么?
      

  5.   

    这不还是保存哪些数据去日志的问题吗?
    每次做操作 比如更新操作  
    在更新之前把要更新的字段select出来 做成2个字符串"name_a,name_b,name_c,name_d"和"value_a,value_b,value_c,value_d"、在把操作当前的页面、时间、用户id保存起来不就行了吗 
    更新操作执行结果、以及更新的值也保存起来
      

  6.   

    ...记录sql????楼主原来怎么做的?
      

  7.   

    就是 直接把操作sql语句存起来 客户说看不懂 这个意思
      

  8.   

    那你写sql的时候标识上这条sql的意思啊...
      

  9.   

    客户最想知道的是,什么时候在系统内做过了什么,结果是如何。
    代码结构要好,访问每个页面都可以知道是什么模块,做什么操作,至于哪个人,就是登录的user咯。
    比如你的url是否能像类似这样
    http://project/index.php?module=article&task=update
    单入口模式,这样你只需要往index.php加入write_log功能就好了。
    至于哪个字段,原值,新值,这个没什么好方法啊,可以引入插件机制,
    开个类存储插件方法,命名以module_task为准,比如以上的url就是article_update
    那么这个插件类就是
    class plugin
    {
      public $extraLog;
      function article_update($field,$old,$new)
      {
        self::$extraLog = array('字段'=>$field,'原值'=>$old,'新值'=>$new);
      }
    }
    这个方法在你流程页面进行数据库操作的地方调用,index.php的write_log流程只读plubin::$extraLog,循环然后和其它信息一起入库或文件。
      

  10.   


    如果是单纯的表,这个没问题。
    我的表关联关系复杂,建立了很多中间表来存储多对多的关系。这种情况下你的这种insert update delete就不好用了。试想一下,你在一个界面下改变多种关联关系,如何"一次性"表达给客户?因为对客户来说这是"一次"操作.
      

  11.   

    我曾经想过用保存html的方式来保存客户的操作。
    当我修改的时候按照标记的区域来截取html。问题是保存后不跳转回当时的操作页面,所以无法生成新的html所以很头疼。
      

  12.   

    长沙本来就小,IT人圈子不活跃。技术交流,广交朋友
    限长沙上班IT族 群号 124617549
      

  13.   

    把日志需要保留的数据用json串或xml等数据结构的方式存储起来,调用的时候直接解析这些数据结构即可。
      

  14.   

    每个数据库都有log文件的,我想能不能在log上考虑考虑呢?
    本人初学,也想共同了解了解。
    关注!
      

  15.   


    对,执行100次操作用户是不知道。但用户看新值和旧值对吧?那你呈现给用户的时候是不是每次都要把这100次操作做2遍(新旧值,而且要在页面内截取当时操作的那个区域)?如果每次操作都不一样难道你要每个操作都要为这个操作写一种记录和显示的方式?
    我懂insert update,delete的记录思想,你仔细想想那样做在复杂表下呈现给用户新旧值复杂不复杂?
      

  16.   

    我想到方法了,在记录复杂表的情况下我用自定义标签截取复杂关系表的html,同时在用户点保存的时候用cakephp的beforesave再截取一次当前页面新值标签内的html,保存新旧值到表内,同时日志表内再记录一次生成的sql组.
    当然,简单数据关系,用{妖言惑众}的那种方法。
    虽然日志这个表将来的数据量会大一些,但总归这种方法做出来的东西比较好。就此结贴。感谢以上多位朋友。