内容へ移動
ゆーものメモ帳
ユーザ用ツール
管理
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
プログラム言語:php:laravel:ログ出力:sqlクエリのログ出力
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== 【Laravel】sqlクエリのログ出力 ====== 本当は MySQL などが出力するクエリログを見るのが一番よいのですが、サーバの権限によっては残念ながら見れないことも。\\ そんなときは、以下の設定を行うことで、Laravel で実行した sql クエリのログを出力することが可能になります。 コンフィグの logging.php に sql ログ用のチャンネルを追加。 <code | config\logging.php> 'channels' => [ // channels 内の一番下に追加 'sqllog' => [ 'driver' => 'daily', 'path' => storage_path('logs/sql.log'), 'level' => 'debug', 'days' => 14, 'permission' => 0664, // パーミッションエラーが出るなら必要に応じて指定 ], ], ]; </code> AppServiceProvider.php の boot 関数内に処理を追加します。 <code | app\Providers\AppServiceProvider.php> <?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Validator; use DB; class AppServiceProvider extends ServiceProvider { public function boot() { // 本番環境では出力しない if (config('app.env') !== 'production') { DB::listen(function ($query) { $sql = $query->sql; $cnt = count($query->bindings); for ($i=0; $i<$cnt; $i++) { $binding = $query->bindings[$i]; if (strlen($binding) > 200) { $binding = mb_strimwidth($binding, 0, 200, '...'); } $sql = preg_replace("/\?/", $binding, $sql, 1); } // channel で出力先のチャンネルを指定 // info に出力したい文字列を指定 Log::channel('sqllog')->info('[' . $query->time . 'ms] ' . $sql); }); } } } </code> これで storage\logs\ にクエリログが出力されるようになります。
プログラム言語/php/laravel/ログ出力/sqlクエリのログ出力.txt
· 最終更新: 2020/06/02 12:10 by
humolife
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ