php实现日志管理(记录用户操作)原理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php实现日志管理(记录用户操作)原理相关的知识,希望对你有一定的参考价值。
php如何实现日志管理,实现原理
简单记录用户登陆信息、增加、删除、修改操作
按简单的理解,给各模块的关键步骤起个操作名字,记录一下该操作名,时间,用户,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实现日志管理(记录用户操作)原理的主要内容,如果未能解决你的问题,请参考以下文章