이 글은 주로 Laravel 프레임워크에서 구현한 SQL 로깅 기능을 소개하며, Laravel 프레임워크의 모니터링 및 기록 SQL 관련 운용 기술과 주의사항을 예시 형태로 정리, 분석하였습니다. SQL 로깅 기능을 포함한 Laravel 프레임워크 구현. 참고하실 수 있도록 자세한 내용은 다음과 같습니다.
프로젝트 개발이나 성능 최적화 과정에서 SQL 실행을 확인해야 하는 경우가 종종 있습니다. 그러나 Laravel 로그에는 기본적으로 SQL 실행이 기록되지 않습니다. 다행히 관련 인터페이스가 있어 SQL 로깅 기능을 쉽게 사용할 수 있습니다.
다음
protected $listen = [
'App\Events\Event' => [
'App\Listeners\EventListener',
],
// 新增SqlListener监听QueryExecuted
'Illuminate\Database\Events\QueryExecuted' => [
'App\Listeners\SqlListener',
],
];
을 추가하여
AppProvidersEventServiceProvider:class새 SqlListener 리스너
메서드 1를 생성하고 AppListenersSqlListener.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) { // 在这里编写业务逻辑 } }
를 따르고, 명령줄을 사용하여 생성한 경우, 명령은 다음과 같습니다
// 该命令必须在项目跟目录下执行,因为项目跟目录下才有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 중국어 홈페이지를 주목해주세요!
관련 권장 사항:
Laravel 프레임워크 템플릿 로드 및 할당 변수와 간단한 라우팅 기능의 경우 Laravel에서 로그를 작성할 수 없는 문제를 해결하는 방법위 내용은 Laravel 프레임워크에서 구현된 SQL 로깅 기능을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!