ホームページ  >  記事  >  バックエンド開発  >  Laravelフレームワークで実装されたSQLロギング機能の使い方

Laravelフレームワークで実装されたSQLロギング機能の使い方

不言
不言オリジナル
2018-06-19 16:33:531915ブラウズ

この記事では、Laravel フレームワークで実装されている SQL ロギング機能を中心に、Laravel フレームワークの監視および記録に関する SQL 関連の操作テクニックと注意事項をサンプル形式でまとめて分析しています。

# この例では、Laravel フレームワークによって実装された SQL ログ機能について説明します。参考までに皆さんと共有してください。詳細は次のとおりです。

プロジェクトの開発プロセスやパフォーマンスの最適化中に、SQL の実行を確認する必要があることがよくありますが、Laravel ログには実行が記録されません。デフォルトでは SQL です。幸いなことに、関連するインターフェイスがあり、SQl ログ機能を簡単に使用できます。

次のコードを

App\Providers\EventServiceProvider:class

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

新しい SqlListener リスナー デバイスの $listen に追加します

メソッド 1 (App\Listeners\SqlListener.php ファイル内に手動で作成)、内容は次のとおりです

namespace App\Listeners;
use Illuminate\Database\Events\QueryExecuted;
class SqlListener {
  /**
   * Create the event listener.
   *
   * @return void
   */
  public function __construct() {
    //
  }
  /**
   * Handle the event.
   *
   * @param =QueryExecuted $event
   * @return void
   */
  public function handle(QueryExecuted $event) {
    // 在这里编写业务逻辑
  }
}

方法 2、コマンド ラインを使用して作成します。コマンドは次のとおりです。

// 该命令必须在项目跟目录下执行,因为项目跟目录下才有artisan文件。
// 该命令可以自动创建SqlListener文件,但是QueryExecuted这个类的导入可能会有点问题,自己改下。

> php artisan make:listener SqlListener -e=QueryExecuted

ハンドル メソッド ロジックに 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类。
}

上記がこの記事の全内容です、皆さんの学習に役立つことを願っています、詳細 関連コンテンツについては、PHP 中国語 Web サイトにご注意ください。

関連する推奨事項:

Laravel フレームワーク テンプレートの変数の読み込みと割り当て、および単純なルーティングの機能について

解決方法Laravelの問題 ログが書き込めない問題

#

以上がLaravelフレームワークで実装されたSQLロギング機能の使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。