zoukankan      html  css  js  c++  java
  • 【Laravel5】利用 Laravel监听器进行sql语句单独记录

    1 添加一个日志通道 : 打开 config/logging.php

    'sql'=>[
        'driver' => 'daily',
        'level' => 'debug',
        'path' => storage_path('logs/sql/log.log'),
    ],
    
    

    2 创建监听器

    php artisan make:listener QueryListener --event=IlluminateDatabaseEventsQueryExecuted
    

    打开 app/Providers/EventServiceProvider.php ,在 $listen 中添加

      protected $listen = [
        'IlluminateDatabaseEventsQueryExecuted' => [
            'AppListenersQueryListener',
        ]
      ];
    

    打开 app/Listeners/QueryListener 文件

    //第一步:头部引入log
    use IlluminateSupportFacadesLog;
    
    //第二步:handle方法修改如下
    public function handle(QueryExecuted $event)
      {
        if (env('APP_DEBUG') {
            $sql = str_replace("?", "'%s'", $event->sql);
            $log = vsprintf($sql, $event->bindings);
    
            $logDir = storage_path('logs/sql');
            if (!is_dir($logDir)) {
                mkdir($logDir, 0777, true);
            }
            Log::channel('sql')->info($log);
        }
    }
    
    

    运行代码。就可以在 storage/logs/sql 下 看到sql 日志了

  • 相关阅读:
    canvas阴影
    Anagrams
    Compare Strings
    php rtrim的一个坑,很“二”的问题
    LRU算法
    linux下重启php服务
    nginx -s reload "/alidata/server/nginx/logs/nginx.pid" failed
    【ACM】阶乘因式分解(二)
    Two Strings Are Anagrams
    找子串
  • 原文地址:https://www.cnblogs.com/richerdyoung/p/13716628.html
Copyright © 2011-2022 走看看