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‘,
		],
		);

  

原文地址:https://www.cnblogs.com/fogwang/p/12092624.html

时间: 2024-10-10 03:17:37

lumen 通过事件记录日志mysql查询日志的相关文章

mysql 查询日志基本操作

mysql查询日志记录了所有mysql数据库请求信息,由于mysql慢查询也可以直观的查询到数据库执行信息,故mysql查询日志用到的场景不多. 基本操作 1.开启查询日志: set global general_log = on; 2.关闭查询日志: set global general_log = off; 3.设置日志输出方式: 查询日志的输出方式有两种,file和table 这个由log_output这个参数控制. 查询日志输出方式: show variables like 'log_o

pt-query-digest分析mysql查询日志

[[email protected] log]# pt-query-digest slowq.log # 200ms user time, 10ms system time, 24.39M rss, 205.12M vsz# Current date: Thu Dec 17 15:32:04 2015# Hostname: hank-yoon.com# Files: slowq.log# Overall: 8 total, 2 unique, 0.00 QPS, 0.00x concurrenc

mysql 查询日志

1. 登录mysql mysql -u root -p; 2. 查看日志启用情况以及日志所在位置 show variables like 'log_%'; 结果示例如下 3. 找到对应的日志文件,保存sql文件 mysqlbinlog --no-defaults /data/mysql/mysql-bin.000007 > /data/backup/bak_20161026.sql 4.如果文件太大,可压缩一下 tar -czvf mybaksql.tar.gz bak_2016126.sql

mysql开启查询日志功能

1.开启查询日志  https://www.cnblogs.com/kerrycode/p/7130403.html MYsql 查询日志配置    mysql> show variables like '%general_log%'; 还要注意,时执行的所有sql都会别记录下来,方便查看,但是如果重启mysql就会停止记录需要重新设置. 原文地址:https://www.cnblogs.com/yaok430/p/9339680.html

MySQL 通用查询日志(General Query Log)

同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志可以帮助我们定义mysqld内部发生的事情,数据库性能故障,记录数据的变更历史,用户恢复数据库等等.本文主要描述通用查询日志. 1.MySQL日志文件系统的组成   a.错误日志:记录启动.运行或停止mysqld时出现的问题.   b.通用日志:记录建立的客户端连接和执行的语句.   c.更新日志:记录更改数据的语句.该日志在M

mysql普通日志。

mysql查询日志:记录所有操作. log[=query.log] log=query.log cat query.log show variables like '%log%'; select @@general_log_file; mysql切换日志: rm/mv query.log mysqladmin flush-logs

MySQL慢查询日志相关的配置和使用。

MySQL慢查询日志提供了超过指定时间阈值的查询信息,为性能优化提供了主要的参考依据,是一个非常实用的功能,MySQL慢查询日志的开启和配置非常简单,可以指定记录的文件(或者表),超过的时间阈值等就可以记录到慢sql了,实话讲,相比较sqlserver的trace或者扩展事件(虽然此二者的作用并非仅仅如此),MySQL的配置总是给人一种非常清爽的感觉. 1,慢查询日志的打开 正常情况下,只需要在配置文件中增加slow_query_log = 1配置,即打开慢查询日志,未指定slow_query_

MySQL慢日志查询

MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中.long_query_time的默认值为10,意思是运行10S以上的语句.默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响.慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表.

MySQL:动态开启慢查询日志(Slow Query Log)

前言 在开发中,高效能的程序 也包括 高效能的查询,所以优化SQL也是程序员必要技能之一.要优化就必须要有慢日志记录才可以知道哪些查询慢,然后反向去修改 慢日志设置方式 写入文件 写入数据库 实践操作 方式一:写入文件 编辑my.conf 中修改 log_slow_queries 的日志地址 $ cd /etc/mysql $ cat my.cnf |grep slow  log_slow_queries = /data/logs/mysql/mysql-slow.log $ sudo /etc