当前位置:首页 > PHP > 正文内容

Laravel记录SQL操作日志的方法

陈杰1年前 (2021-01-29)PHP2695

在laravel中我们有一个需求就是,涉及到sql操作的update,insert,delete操作的语句,我们都要写一个日志来记录一下


说说方法吧。


在项目目录app/Providers/AppServiceProvider.php中添加代码


/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
       DB::listen(function ($query) {
           $tmp    = str_replace('?', '"' . '%s' . '"', $query->sql);
           $tmp    = vsprintf($tmp, $query->bindings);
           $tmp    = str_replace("\\", "", $tmp);
           $action = substr($tmp, 0, 6);
           if ($action == 'update' || $action == 'delete' || $action == "insert") {
               $myfile = fopen("sql.txt", "a+") or die("Unable to open file!");
               fwrite($myfile, $tmp . "   use_time:" . $query->time . "ms   " . date('Y-m-d H:i:s') . " \n\n");
               fclose($myfile);
           }
       });
}


最终在public目录下写入了sql.txt文件中


image.png

扫描二维码至手机访问

扫描二维码推送至手机访问。

版权声明:本文由何烦过虎溪发布,如需转载请注明出处。

转载请注明出处:http://95shouyou.com/?id=37

分享给朋友:

相关文章

laravel通过模板html生成word文档

laravel通过模板html生成word文档

因为公司项目需要,内部的管理系统有一个php实时查询数据库,根据内容来生成word文档排版没有什么需求,实现原理是查询数据库,然后用laravel自带的模板引擎,生成一个html网页,然后修改网页的r...

laravel实现微信公众号授权登录实战

微信公众号授权登录实战框架:laravel依赖:overtrue/wechat首先安装一下easywechat依赖composer require overtrue/wechat:...

lavel对接个推别名推送

lavel对接个推别名推送

新项目采用uniapp开发,需要用到推送功能,之前接过极光,其中的一些坑都踩过了,但是unipush用的是个推的推送,那就只有重写踩坑了。composer  require&nbs...

Lumen框架报错Cannot declare class Event, because the name is already in use

Lumen框架报错Cannot declare class Event, because the name is already in use

Lumen框架报错信息Cannot declare class Event, because the name is already in use(1/1) ErrorExceptionCa...

laravel的Observer观察者模式模型事件实战

laravel的orm特别好用,特别是observer观察者模式,可以在不更改原有业务代码的情况下做到切入编程,有点类似于我们之前常用的钩子函数。下面就是我们深入observer观察者模式的实战代码现...

php对接支付宝转账到第三方接口实战

公司项目有一个用户钱包系统,用户创作的内容可以收到游客的打赏,当然就需要提现的接口了。最终选定的是支付宝转账接口,公司代收账户直接打款给用户绑定的支付宝账号,再也不用人工手动打款了。上代码准备好工具,...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。