Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie die vom Laravel-Framework implementierte SQL-Protokollierungsfunktion
In diesem Artikel wird hauptsächlich die vom Laravel-Framework implementierte SQL-Protokollierungsfunktion vorgestellt. Er fasst die Überwachungs- und Aufzeichnungstechniken und Vorsichtsmaßnahmen des Laravel-Frameworks in Form von Beispielen zusammen >
Das Beispiel beschreibt die vom Laravel-Framework implementierte SQL-Protokollierungsfunktion. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt: Während der Projektentwicklung oder Leistungsoptimierung ist es häufig erforderlich, die Ausführung von SQL zu überprüfen. Laravel-Protokolle zeichnen die Ausführung von SQL jedoch nicht auf Standard. Glücklicherweise gibt es relevante Schnittstellen und wir können die SQL-Protokollierungsfunktion problemlos verwenden. Fügen Sie Folgendes zu $listen inAppProvidersEventServiceProvider:class wie folgt hinzu
protected $listen = [ 'App\Events\Event' => [ 'App\Listeners\EventListener', ], // 新增SqlListener监听QueryExecuted 'Illuminate\Database\Events\QueryExecuted' => [ 'App\Listeners\SqlListener', ], ];Neuer SqlListener-Listener
Methode 1, manuell erstellt, in der Datei AppListenersSqlListener.php lautet der Inhalt wie folgt
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) { // 在这里编写业务逻辑 } }
Methode 2, erstellt über die Befehlszeile, der Befehl lautet wie folgt
// 该命令必须在项目跟目录下执行,因为项目跟目录下才有artisan文件。 // 该命令可以自动创建SqlListener文件,但是QueryExecuted这个类的导入可能会有点问题,自己改下。 > php artisan make:listener SqlListener -e=QueryExecutedSchreiben Sie die Geschäftslogik zum Aufzeichnen von SQL in das Handle Methode, wie zum Beispiel:
/** * 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类。 }Das Obige ist der gesamte Inhalt dieses Artikels Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website! Verwandte Empfehlungen:
Für die Funktionen des Laravel-Framework-Vorlagenladens und -Zuweisens von Variablen und einfaches Routing
So lösen Sie Das Problem in Laravel Problem, dass das Protokoll nicht geschrieben werden kann
Das obige ist der detaillierte Inhalt vonSo verwenden Sie die vom Laravel-Framework implementierte SQL-Protokollierungsfunktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!