LoginSignup
5
7

Laravel開発をスムーズに!Blink Loggerで楽々デバッグ!

Last updated at Posted at 2024-04-10

lbl_image.jpg

Laravel Blink Logger

  • Laravel Blink Logger: v1.1.0 (記事公開時点)
  • PHP: >=8.0.2
  • Laravel: >=9.x

Laravelのクエリー、リクエスト、レスポンス、HTTPクライアントのログを出力するライブラリを作りました。
「Blink」はまばたきを意味するので、まばたきするようにログ出力をオン/オフ切り替えできるイメージでライブラリを作りました。

関連記事

この辺りの記事を元にライブラリを作りました。

インストール

$ composer require --dev ucan-lab/laravel-blink-logger

--dev で追加すると本番環境ではそもそもライブラリがインストールされないようにできます。

任意: config ファイルの公開

$ php artisan vendor:publish --tag=blink-logger

config/blink-logger.php が生成されます。
特にする必要ないですが、ミドルウェアやリスナーを差し替えてカスタマイズしたい人はここから設定してみてください。

使い方

.env に有効化したいログを設定してください。
未指定の場合はログ出力しません。

LOG_QUERY_ENABLED=true
LOG_HTTP_REQUEST_ENABLED=true
LOG_HTTP_RESPONSE_ENABLED=true
LOG_HTTP_CLIENT_REQUEST_ENABLED=true
LOG_HTTP_CLIENT_RESPONSE_ENABLED=true

設定は以上です!
あとはリクエスト叩いたり、クエリーを実行して出力を確認してください!

こんな感じでログが出力されます。

$ tail -f storage/logs/laravel.log
[2024-04-05 16:38:58] local.DEBUG: GET: http://example-app.test/api/foo/bar?baz=qux {"request":{"baz":"qux"},"headers":{"accept-language":["ja,en-US;q=0.9,en;q=0.8"],"accept-encoding":["gzip, deflate"],"accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"],"user-agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"],"upgrade-insecure-requests":["1"],"cache-control":["max-age=0"],"connection":["keep-alive"],"host":["example-app.test"]}} 
[2024-04-05 16:38:58] local.DEBUG: START TRANSACTION  
[2024-04-05 16:38:59] local.DEBUG: 4.01 ms, SQL: insert into `users` (`name`, `email`, `email_verified_at`, `password`, `remember_token`, `updated_at`, `created_at`) values ('Concepcion VonRueden Sr.', 'judy30@example.net', '2024-04-05 16:38:58', 'y$L7Lb.DoH7sO5Zb7RrGtSzelx6Y15gBtetVYlI4z4wB5I83oh6To1i', 'ZD34nR26LH', '2024-04-05 16:38:59', '2024-04-05 16:38:59');  
[2024-04-05 16:38:59] local.DEBUG: 3.02 ms, SQL: update `users` set `name` = 'change name', `users`.`updated_at` = '2024-04-05 16:38:59' where `id` = 122;  
[2024-04-05 16:38:59] local.DEBUG: 1.61 ms, SQL: delete from `users` where `id` = 122;  
[2024-04-05 16:38:59] local.DEBUG: 2.28 ms, SQL: insert into `users` (`name`, `email`, `email_verified_at`, `password`, `remember_token`, `updated_at`, `created_at`) values ('Delfina Brakus IV', 'anibal.cummings@example.org', '2024-04-05 16:38:59', 'y$L7Lb.DoH7sO5Zb7RrGtSzelx6Y15gBtetVYlI4z4wB5I83oh6To1i', 'Qvq73GjdiQ', '2024-04-05 16:38:59', '2024-04-05 16:38:59');  
[2024-04-05 16:38:59] local.DEBUG: COMMIT  
[2024-04-05 16:38:59] local.DEBUG: 2.15 ms, SQL: select * from `users` where `users`.`id` = 123 limit 1;  
[2024-04-05 16:38:59] local.DEBUG: 200 OK {"body":"{\"data\":\"ok\"}","headers":{"cache-control":["no-cache, private"],"date":["Fri, 05 Apr 2024 16:38:59 GMT"],"content-type":["application/json"],"x-ratelimit-limit":["60"],"x-ratelimit-remaining":["55"],"access-control-allow-origin":["*"]}} 

今後の予定

substituteBindingsIntoRawSql を使いたいので、v2.x ではLaravel 10.15.0 以降をサポートしたいと思います。

Q&A

Laravel Telescope でええやん?

それはそう。
クエリー、リクエスト、レスポンス、HTTPクライアントをただログに吐き出すだけをしたかった。

5
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7