Cet article présente principalement la fonction de journalisation SQL implémentée par le framework Laravel. Il résume et analyse les techniques de surveillance et d'enregistrement du framework Laravel et les précautions d'exploitation liées à SQL sous forme d'exemples. >
L'exemple décrit la fonction de journalisation SQL implémentée par le framework Laravel. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants : Lors du développement d'un projet ou de l'optimisation des performances, il est souvent nécessaire de vérifier l'exécution de SQL. Cependant, les journaux Laravel n'enregistrent pas l'exécution de SQL par. défaut. Heureusement, il existe des interfaces pertinentes, et on peut facilement utiliser la fonction de journalisation SQL. Ajoutez ce qui suit à $listen dansAppProvidersEventServiceProvider:class
protected $listen = [ 'App\Events\Event' => [ 'App\Listeners\EventListener', ], // 新增SqlListener监听QueryExecuted 'Illuminate\Database\Events\QueryExecuted' => [ 'App\Listeners\SqlListener', ], ];
Méthode 1, créée manuellement, dans le fichier AppListenersSqlListener.php , le contenu est le suivant
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) { // 在这里编写业务逻辑 } }
Méthode 2, créée à l'aide de la ligne de commande, la commande est la suivante
// 该命令必须在项目跟目录下执行,因为项目跟目录下才有artisan文件。 // 该命令可以自动创建SqlListener文件,但是QueryExecuted这个类的导入可能会有点问题,自己改下。 > php artisan make:listener SqlListener -e=QueryExecuted
/** * 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类。 }
Pour les fonctions du modèle de framework Laravel, chargement et attribution de variables et routage simple
Comment résoudre le problème dans Laravel Problème selon lequel le journal ne peut pas être écrit
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!