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

Laravel记录SQL操作日志的方法

陈杰6个月前 (01-29)PHP1010

在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集成极光推送实战

公司项目需要用到app推送消息通知,市面上很多推送渠道商,选来选去最终选定了极光推送,因为项目使用laravel写的,laravel自身又有模型事件,所以研究了一下,在不改动原有代码的情况下,给项目加...

通过代码创建多个同样的mysql表

在分库分表中可能要同时创建多个结构相同但后缀不同的表,通过代码实现for ($i = 3; $i <= 20; $i++) {    DB::connection('...

Lumen框架报错Class session does not exist

Lumen框架报错Class session does not exist

由于lumen框架是为速度而生的 Laravel 框架,所以移除了session的支持,虽然在ide中代码提示可以敲出Session::put()方法出来,但是最终还是提示的是Class sessio...

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

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

通过supervisor管理laravel的queue队列

通过supervisor管理laravel的queue队列

配置文件[program:queue]command=php artisan queue:work redis --tries=3 --delay=3directory=/www/wwwroot/sh...

Laravel带条件查询多个count

Laravel带条件查询多个count

在一个数据表中,我们需要用到聚合函数count来查询符合条件的总数。举例一个场景:我们有一个帖子,这个帖子可以分别被好中差评,好中差评记录用一个单独的记录表来存储。如果用户点击好评,那么该帖子作者的经...

发表评论

访客

看不清,换一张

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