php实现日志管理(记录用户操作)原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php实现日志管理(记录用户操作)原理相关的知识,希望对你有一定的参考价值。

php如何实现日志管理,实现原理
简单记录用户登陆信息、增加、删除、修改操作

  把日志需要保留的数据用json串或xml等数据结构的方式存储起来,调用的时候直接解析这些数据结构即可。
  按简单的理解,给各模块的关键步骤起个操作名字,记录一下该操作名,时间,用户,IP等就完了。
  单入口模式,这样只需要往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,循环然后和其它信息一起入库或文件。
参考技术A 分别实现的是实现登录日志和操作日志,自定义2个函数数,在用户登录和增加,修改和删除的时候分别DO这两个函数。信息就记录到数据库表中。

运营后台操作日志(web)思路+实现

今天产品给我给我提了一个需求,要求我添加操作日志,记录登录人对运营后台的操作详细过程,本人菜鸟一枚,记录一下我的思路和过程,等我成为大佬的时候方便自我吐槽!。

产品要求:

  要求:

    1、要求记录操作人的名字,操作电脑的ip

    2、记录操作内容

  目的:

    方便追溯责任,比如某管理员,审核了某个用户的申请,屏蔽了某个人的图片,冻结了某个用户等。当出问题的时候我们能拿出证据。

我的思路:

  开始的时候我是完全按照产品需求做。步骤是这样的:

    1、自定义注解,两个参数:操作描述(description),操作类型:(type)

    2、用Java的aop对每个controller拦截

    3、在每个controller添加注解

    类似这样

@SaveOperateControllerLog(descrption = "聊天室管理 => 公会列表==>新增或者编辑工会营业执照", actionType = 1)
@RequestMapping("/updateClubBiz")
public Result updateClubBiz(@RequestBody PlatformEntryClub club) {
try {
return Result.ok(clubService.updateClubBiz(club));
} catch (Exception e) {
log.error("错误信息:{}",e);
return Result.error(ResultCode.ERROR.getCode(),ResultCode.ERROR.getMessage());
}
}


天真的我以为这样就可以了,但是产品说这个不行,让我好好思考下我们做操作日志的目的,想想日志该怎么记录。这里我反思了自己,我在一个小公司,我不知道大厂提需求是怎么样的,我们公司会产品口头表述,然后出一份简单的原型。而我就死板的照着原型做,其实这是不对的,我认为不管在大厂还是小公司,产品需求多么的详细,原型多么的完美,作为具体操作的者的我们都应该反复的思考一下,这样是否可行,这样做的目的是什么(或者说功能是啥)、是否有可以改进的地方等等,最后才考虑我该怎么去实现这个功能。不然等你代码写好了,自己在洋洋得意的时候,突然发现自己写的代码不对,或者说不能完全满足需求。就算你和需求一样,产品一句话你还不是要改。同事有句话说得好:是你的需求始终是你的,如果能一次写好是最好的,改来改去谁都烦,主要是再烦你还不是要改。偏了,下面继续。

在百度上看了很多例子后的思路:

  在之前的基础上添加:添加请求参数、访问方法名、方法参数、返回结果、执行时间等,我以为这次完美了,但是并没有,参数是全面了,但是可读性不强,程序员能看懂,但是产品看着就很吃力了。所以下面就写我第三次更改后的代码,其实我写这篇博客的时候(2019年11月30日01:44:11)第三版本代码还没有写,准备今天晚上写个demo测试下,明天添加到我的分支上。有时间在同步博客。菜鸟程序员不配拥有周末!!!!!!!!

 

 

 

以上是关于php实现日志管理(记录用户操作)原理的主要内容,如果未能解决你的问题,请参考以下文章

利用Spring的aop原理实现系统级日志管理

利用Spring的aop原理实现系统级日志管理

求助!使用spring ioc注入管理,spring aop做日志记录。。

SpringBoot统一日志管理

利用Spring的aop原理实现系统级日志管理

利用Spring的aop原理实现系统级日志管理