<?php
namespace app\bootstrap;
use Chance\Log\orm\illuminate\MySqlConnection;
use Illuminate\Database\Connection;
use Webman\Bootstrap;
class Log implements Bootstrap
{
public static function start($worker)
{
Connection::resolverFor('mysql', function ($connection, $database, $prefix, $config) {
return new MySqlConnection($connection, $database, $prefix, $config);
});
}
}
我去,你这好牛逼啊,喜欢
牛哇牛哇
\Illuminate\Database\Connection::resolverFor('mysql', function ($connection, $database, $prefix, $config) {
return new \Chance\Log\orm\illuminate\MySqlConnection($connection, $database, $prefix, $config);
});
这代码写在哪里
你可以自定义一个Bootstrap:
然后在
config/bootstrap.php
配置文件中增加:app\bootstrap\Log::class
感谢
我用你这个的时候 做get***TextAttribute 修改监听到了 但是 原始值跟修改的值在log里面会一样
修改 商品 (id:1591):品牌由:宇时代 改为:宇时代;
这个是我打印出来的$key的值
goodsBrand 是我商品跟商品品牌的关系
获取原始值你要对传入的key进行处理
我想对原始值进行处理 但是 打出来是个null 修改后的值是有的
我今天看了你的源码 看你用了getOriginal 但是好像 getOriginal() is not working in laravel 8 不知道是不是这个原因
Laravel8也是有这个方法的 那个39不是吗?
那我在看下 不知道为啥会有两个null
请问想要获取原始值,要对传入的key怎么处理呢,我使用webman 也出现了2个NULL
已经获取到原始值了,传入的 key 为原始id,当key 存在时,通过查询获取原始值内容,并将其返回,就能在日志记录中获取显示原始值和修改值了
加个建议 没有在$columnComment的字段不记录就好了
感谢建议 可以在模型中通过
$ignoreLogFields
设置不记录日志的字段更新
fix
Laravel ORM 给 update time 增加表前缀的问题fix
重复触发修改器的问题feature
事务回滚则删除生成的已回滚的操作日志注册 MySQL 数据库连接的解析器,这一步我不会操作,大佬
性能损耗很明显,只引入了这个日志插件。不生成日志,30%损耗,哪怕在model 中不生成该表的日志,也一样
如果不需要记录日志可以通过这个方法关闭
\Chance\Log\facades\OperationLog::disable();
只建议在管理后台使用,如果前台项目和后台项目在一起的话可以在前台项目的中间件通过上面的命令关闭
好的,已经解决了,我在全局中间件\app\middleware\CorsControl::class中禁用日志,在需要生成日志的地方启用,性能并不会受影响,谢谢
你好,请问使用的laravel orm,外键id修改,怎么记录关联的修改内容的,只记录外键id 可读性不够好
可以定义一个
外键_text
的访问器请问定义了获取器,怎么去获取变更的内容呢,需要自己手动比对吗
看文档,接收一个 key ,会将旧 key 传入
楼中评论无法放入图片,请问这是为什么呢,我定义了一个获取器,日志记录依旧无法获取到对应字段获取器的内容,是需要手动调用获取器吗
应该是没有找到对应模型,可以设置一下表模型对应关系
\Chance\Log\facades\OperationLog::setTableModelMapping
好的,解决了,谢谢
你好大佬问下,我启用这个日志 如果我不去删除这个记录日志是一直记录吗?
这个包只是生成日志,怎么记录保存是你自己决定的
请问,如果我想保存操作记录的话,每次操作完数据库都要执行
\Chance\Log\facades\OperationLog::getLog();
来输出日志再存起来吗
是的 可以在后置中间件统一存储
你好,我已经定义了获取器,OperationLog::getLog(); 如何让返回的内容地区ID变为地区名称呢,我想要的结果是当user 表地区id修改时,变更日志为:修改 用户表 (id:14):地区由:茅箭区改为:余杭区,更新时间由:1714289289 改为:1714289289
应该是没找到对应的 model ,你可以创建一个表模型映射关系
手动映射模型关系
这个代码应该放在哪里呢,生成日志的业务代码里面吗,我试过了,不生效
放在业务代码之前就可以了