Log日志截取sql语句_skyisbluening的博客-程序员宅基地_sql log语句

技术标签: 数据库  PHP-Laravel  


一、 Laravel 记录SQL日志
1、在 App\Providers\EventServiceProvider:class 中的$listen中新增如下

protected $listen = [
    'App\Events\Event' => [
        'App\Listeners\EventListener',
    ],
    // 新增SqlListener监听QueryExecuted
    'Illuminate\Database\Events\QueryExecuted' => [
        'App\Listeners\SqlListener',
    ],
];

  1. 新建SqlListener监听器
方法1,手动创建,在App\Listeners\SqlListener.php 文件,内容如下
protected $listen = [
    'App\Events\Event' => [
        'App\Listeners\EventListener',
    ],
    // 新增SqlListener监听QueryExecuted
    'Illuminate\Database\Events\QueryExecuted' => [
        'App\Listeners\SqlListener',
    ],
];

方法2,使用命令行创建,命令如下
// 该命令必须在项目跟目录下执行,因为项目跟目录下才有artisan文件。 // 该命令可以自动创建SqlListener文件,但是QueryExecuted这个类的导入可能会有点问题,自己改下。 >
php artisan make:listener SqlListener -e = QueryExecuted

  1. 在handle方法中编写记录sql的业务逻辑,如:
    /**
     * Handle the event.
     *
     * @param  =QueryExecuted  $event
     * @return void
     */
    public function handle(QueryExecuted $event) {
    
        $sql = str_replace("?", "'%s'", $event->sql);
    
        $log = vsprintf($sql, $event->bindings);
    
        $log = '[' . date('Y-m-d H:i:s') . '] ' . $log . "\r\n";
        $filepath = storage_path('logs\sql.log');
        file_put_contents($filepath, $log, FILE_APPEND);
    
        // 这里也可以直接用Log::info() 里的函数,只是这样会和其他调试信息掺在一起。
        // 如果要用Log里的函数,别忘记了引入Log类。
    }



// 这里也可以直接用Log::info() 里的函数,只是这样会和其他调试信息掺在一起。 // 如果要用Log里的函数,别忘记了引入Log类。 }
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38682852/article/details/79570170

智能推荐

地下水运动方程的解析解(一维潜水)_小孟的CDN的博客-程序员宅基地

一维潜水运动方程的解析解推导,采用积分变换法解水头,并与数值解进行了对比

EF Core 5.0原生sql语句执行_棉晗榜的博客-程序员宅基地_ef5 直接执行sql

微软官网文档:https://docs.microsoft.com/zh-cn/ef/core/querying/raw-sql原生sql执行 public async Task<(int, int, int)> GetImgViewCount() { const string sql = @" select --图片总数(可查看) (select count(0) from[img_info] where [i_status] = 1

Android Looper与Message_bossanovo的博客-程序员宅基地_looper message

Android的Handler机制是一个非常强大的消息的机制系统,Handler机制的使用在Android整个系统中随处可见。Handler作为消息中转器和处理器,是用户进行消息处理的最直接接口,而消息的队列处理和按序分发,即Handler机制的背后支持,则是由Looper和MessageQueue来进行处理。这里不对Handler做相关介绍,重点是Looper和MessageQueue怎...

C# 使用线程同步上下文实现跨线程操作UI_土豆赛叩的博客-程序员宅基地

SynchronizationContext 是.net提供的一套线程同步上下文其中有两个方法实现把委托同步到线程1.Post(异步)2.Send(同步)对Windows窗口消息熟悉的同学应该明白了其函数特性类似于 SendMessage  和 PostMessagePost 为异步 提交了就不管了什么时候完成什么时候算Send为同步 直到委托执行完毕才会返回Test ...

深度学习:可视化-结果loss acc可视化及测试数据显示_sky_柘的博客-程序员宅基地_画loss和acc图可视化

一 迁移学习1理论1.1what经有猫的分类器模型了,没必要从头开始训练,你可以将猫分类器模型的网络结构和参数迁移到训练狗的分类器模型中,然后稍微修改一下就能使用了1.2优点更高的起点。微调前,源模型的初始性能比不使用迁移学习高。更高的斜率。训练中,源模型的提升速率比不使用迁移学习高。更高的渐进。训练得到的模型的收敛性比不使用迁移学习更好。1.3迁移学习的方法实现迁移学习主要有两种常见的方法:Convnet微调:代替随机初始化,我们使用预训练的网络初始化我们的模型,,修改全连接层后再训练

qt的托盘程序无法在ubuntu上进行显示tooltip_道亦无名的博客-程序员宅基地_qt tooltip 不显示

这个原本以为是我的程序写错了,后面经过其他系统进行测试,程序根崩没有问题那个QSystemTrayIcon 在ubuntu上是经过处理了的。所以在将鼠标移动到托盘的位置的时候会并没有出现悬浮的文字。经过分析和多方排查,原来是ubuntu在作窗口管理的时候将这个给过滤掉了,不进行显示。...

随便推点

android芯片配置和参数的获取_android小菜比的博客-程序员宅基地

【转发】https://blog.csdn.net/mozushixin_1/article/details/93724849用build直接获取参数Log.d("build","BOARD:" + Build.BOARD);Log.d("build","BOOTLOADER:" + Build.BOOTLOADER);Log.d("build","BRAND:" + Build.BRAND);Log.d("build","CPU_ABI:" + Build.CPU_ABI);Log.d("b

Chrome升级 76.0.3809.87后 GreenChrome无法使用的办法_weixin_30586257的博客-程序员宅基地

手贱升级了,然后发现GreenChrome失效了没有双击tab关闭标签感觉自己的上网体验下降了一大截。。原文是这么说的这里附上下载链接链接:https://share.weiyun.com/5ewBBlq 密码:bmkz4j方法上面写的很详细,注意bat文件右键选择管理员模式!这里是上面图片的出处https://blog.shuax.com/archive...

bzoj 2434 [Noi2011]阿狸的打字机 [AC自动机+树状数组]_accepoc的博客-程序员宅基地

Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机。打字机上只有28个按键,分别印有26个小写英文字母和'B'、'P'两个字母。经阿狸研究发现,这个打字机是这样工作的:| 输入小写字母,打字机的一个凹槽中会加入这个字母(这个字母加在凹槽的最后)。| 按一下印有'B'的按键,打字机凹槽中最后一个字母会消失。| 按一下印有'P'的按键,打字机会在纸上打印出凹槽中现有的所有

Qt5中的字符串乱码问题_Linux菜_鸟的博客-程序员宅基地_qt 0xad3508

先例举几种Qt5中QString使用汉字的可能方法与结果:(以下结果适用用MSVC编译,工程使用Unicode字符集或多字节字符集的情况)  //可以看出,与工程使用何种字符集无关测试代码源文件ASCII编码保存 源文件UTF-8无BOM保存源文件UTF-8且有BOM保存(需要使用VS2010SP1且加入#pragram executio

java 调用sh 结果输出_java调用shell命令并获取执行结果的示例_不行我不能睡的博客-程序员宅基地

使用到Process和Runtime两个类,返回值通过Process类的getInputStream()方法获取package ark;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.uti...

推荐文章

热门文章

相关标签