lumen 通过事件记录日志mysql查询日志
有时,我们调试需要记录用户对数据库的查询记录。mysql 免费版没有这个功能,但是我们可以通过laravel 监听事件(event)来达到目的
第一步:通过命令新建文件
php artisan make:listenter SqlQueryListener
第二步:编辑 新建的这个文件
<?php
namespace App\Listeners;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Database\Events\QueryExecuted;
use Illuminate\Support\Facades\Log;
class SqlQueryListener
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* 记录SQL查询日志
*
* @param object $event
* @return void
*/
public function handle(QueryExecuted $event)
{
try {
if (env(‘API_DEBUG‘) == true) {
$sql = str_replace("?", "‘%s‘", $event->sql);
foreach ($event->bindings as $i => $binding) {
if ($binding instanceof DateTime) {
$event->bindings[$i] = $binding->format(‘\‘Y-m-d H:i:s\‘‘);
} else {
if (is_string($binding)) {
$event->bindings[$i] = "‘$binding‘";
}
}
}
$log = vsprintf($sql, $event->bindings);
$log = $log . ‘ [ RunTime:‘ . $event->time . ‘ms ] ‘;
/*记录sql查询信息到日志,记录日志并自定义位置*/
Log::useDailyFiles(storage_path(‘logs/job/error.log‘));
Log::info($log);
}
} catch (Exception $exception) {
}
}
}第三步:在providers目录下EventServiceProvider设置
protected $listen = array(
...................
‘Illuminate\Database\Events\QueryExecuted‘ => [
‘App\Listeners\QueryListener‘,
],
); 相关推荐
zhuxue 2020-10-14
zhangbingb 2020-09-21
HeronLinuxampARM 2020-09-14
美丽的泡沫 2020-09-08
goodstudy 2020-08-19
luvhl 2020-08-17
littleFatty 2020-08-16
gamestart0 2020-08-15
URML 2020-08-15
sfkong 2020-08-02
82941732 2020-07-27
偏头痛杨 2020-07-18
timewind 2020-07-04
89407707 2020-06-27
xiaoxiaoCNDS 2020-06-26
lyjava 2020-06-26
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。以上实例中 7、5 和 12 是操作数。关系运算符用于计算结果是否为 true 或者 false。逻辑运算符用于测定变量或值之间的逻辑。
ChaITSimpleLove 2020-06-25
Strongding 2020-06-25