Tôi sẽ giải thích cho bạn ví dụ về laravel 9 lưu trữ nhật ký truy vấn sql hùng hồn vào tệp nhật ký ứng dụng cũng như vào tệp nhật ký tùy chỉnh. Quản lý nhật ký truy vấn giúp gỡ lỗi, tìm chi tiết các truy vấn đang chạy trong ứng dụng Show Tệp nhật ký là những tệp lưu trữ trạng thái ứng dụng như lỗi, thông tin, cảnh báo, v.v. Tệp nhật ký giúp nhà phát triển ứng dụng gỡ lỗi ứng dụng Laravel theo mặc định cung cấp /storage/logs/laravel. vị trí tệp nhật ký nơi lưu trữ nhật ký ứng dụng. Nhưng đôi khi chúng ta có thể cần tạo tệp nhật ký với tác vụ cụ thể. Ngoài ra để duy trì nhật ký, chúng tôi có gói trình soạn thảo thực hiện chính xác điều tương tự như những gì chúng tôi đang thảo luận. Nhấp vào đây để tìm hiểu về gói LogViewer và nó đang hoạt động Bắt đầu nào Tải xuống Laravel Hãy để chúng tôi bắt đầu hướng dẫn bằng cách cài đặt một ứng dụng laravel mới. nếu bạn đã tạo dự án rồi thì bỏ qua bước sau composer create-project laravel/laravel example-app Khái niệm 1. Lưu trữ trong tệp nhật ký mặc định Vị trí tệp nhật ký mặc định của Laravel là lưu trữ/log/laravel. đăng nhập. Chúng tôi sẽ lưu trữ nhật ký SQL trong tệp. Nhưng trước khi lưu trữ nhật ký, chúng ta cần thực hiện một số cấu hình Mở AppServiceProvider. php từ thư mục ứng dụng/Nhà cung cấp ứng dụng/Nhà cung cấp/AppServiceProvider. php
Chúng tôi đã thêm logic nhật ký truy vấn vào phương thức boot() Bất cứ khi nào chúng tôi chạy bất kỳ truy vấn nào bằng cách sử dụng Mô hình, Truy vấn thô, Eloquent, v.v. thì các truy vấn sẽ tự động được quản lý thành truy vấn. tệp nhật ký. Tệp này sẽ nằm trong thư mục /storage/logs Đối với hầu hết các dự án Laravel dựa trên web, bạn có thể sử dụng gói laravel-debugbar tuyệt vời để có cái nhìn tổng quan trong trình duyệt về tất cả các truy vấn của bạn đang được thực thi trên mỗi trang. Đối với các lệnh chạy qua Artisan tại dòng lệnh, bạn cần một giải pháp thay thế Đây là một phương pháp mà tôi đã sử dụng khá thường xuyên khi làm việc với DNS Spy, vì hầu hết logic của ứng dụng nằm bên trong các công việc của worker, chỉ được thực thi thông qua CLI Vì vậy, đây là một phương pháp nhanh chóng để ghi lại tất cả các truy vấn SQL của bạn vào đầu ra của bảng điều khiển
Đầu tiên, nhập DB Facade Tiếp theo, thêm một trình nghe mới cho mọi truy vấn đang được thực thi và để nó Kết quả; $ php artisan queue:work ... string(170) "select * from `xxx` where `xxx`.`record_id` = ? and `xxx`.`record_id` is not null ..." string(146) "insert into `xxx` (`value`, `nameserver_id`, `ttl`, .. ) values (?, ?, ?, ...)" Thêm trình nghe DB là một cách thuận tiện để xem tất cả các truy vấn của bạn ngay tại bảng điều khiển, trong những trường hợp không thể sử dụng thanh gỡ lỗi Trong quá trình tối ưu hóa tốc độ và truy vấn ứng dụng, chúng tôi phải điều tra xem có bao nhiêu truy vấn đang chạy cho các yêu cầu điểm cuối cụ thể và số dòng của truy vấn đó là bao nhiêu và truy vấn đó cần bao nhiêu thời gian để thực thi, v.v. Trong trường hợp này, gói Laravel Query Log giúp cuộc sống của chúng ta dễ dàng hơn. Chỉ cần cài đặt nó và kích hoạt nó từ tệp env của bạn và hoàn tất. Nó sẽ ghi nhật ký tất cả các truy vấn SQL đã thực hiện trong laravel của bạn, số dòng, tổng truy vấn, SQL cuối cùng, các ràng buộc SQL và nhiều hơn nữa. Hãy xem cách chúng ta có thể cài đặt và sử dụng nó trong dự án Laravel của bạn Đặc trưng
Nhật ký truy vấn mẫu
Cài đặtCài đặt rất đơn giản. Chỉ cần chạy lệnh soạn nhạc này qua dấu nhắc lệnh của bạn
Tập quánĐể bật nhật ký truy vấn, hãy đặt nhật ký này vào tệp
Bây giờ bạn sẽ thấy mỗi bản ghi truy vấn đã thực hiện trong tệp Làm cách nào để ghi lại thời gian truy vấn trong Laravel?Mở ứng dụng/Nhà cung cấp/Nhà cung cấp dịch vụ ứng dụng. php đặt đoạn mã bên dưới vào phương thức khởi động. ĐB. lắng nghe (hàm ($ truy vấn) { Nhật ký. thông tin($query->sql); . thông tin($query->time); . Log::info($query->time); // query time in milliseconds }); Then check the log file for the details in storage/logs/laravel.
Phương pháp nào được sử dụng để lấy tất cả các bản ghi từ cơ sở dữ liệu trong Laravel?Sau khi định cấu hình cơ sở dữ liệu, chúng tôi có thể truy xuất các bản ghi bằng cách sử dụng mặt tiền DB bằng phương thức chọn .
Làm cách nào để kiểm tra truy vấn được thực thi hay không trong Laravel?DB. kết nối ('my_connection') -> enableQueryLog(); . print_r( DB. kết nối('my_connection')->getQueryLog() );
Làm cách nào để sử dụng truy vấn SQL thô trong Laravel?Ví dụ từ tài liệu của Laravel. $users = DB. table('users') ->selectRaw('count(*) as user_count, status') ->where('status', '<>', 1) ->groupBy('status') ->get(); . $products = DB. table('products') ->leftjoin('category','category. Another example: $products = DB::table('products') ->leftjoin('category','category. |