Hur man loggar frågan i Laravel
Vill du skriva ut frågan i Laravel? Eller med andra ord, vill du logga frågor i Laravel? Båda frågorna har något olika svar. För att skriva ut frågan kan du bara skriva ut den senast genomförda frågan och visa den i en webbläsare. Men jag skulle rekommendera att du loggar frågan i Laravel. Om du gör det sparas alla dina frågor i loggfilen och du kan se den när som helst.
I den här artikeln visar jag båda alternativen som hjälper en användare att se frågorna i deras Laravel-applikation.
När du utvecklar en Laravel-applikation kan du ibland stöta på en situation där du måste se om den skriftliga frågan är korrekt eller inte. Detta beror på flera skäl – kanske får användarna inte en förväntad utdata, du får ett långsamt svar från en databasserver, eller så får du ingen utdata som något fel med din fråga etc. I alla dessa scenarier, om du loggar frågan så hjälper det att felsöka problemet.
Hur skriver jag ut frågor i Laravel?
Att skriva ut den senast utförda frågan är en engångsprocess. Du kan behöva skriva ut din fråga i webbläsaren. Frågan lagras inte någonstans. Nedan följer ett enkelt exempel för att skriva ut din fråga i Laravel.
DB::enableQueryLog();
$arr_user = DB::table('users')->select('name', 'email as user_email')->get();
dd(DB::getQueryLog());
Här har jag använt två uttalanden DB::enableQueryLog()
och dd(DB::getQueryLog())
. Det första uttalandet möjliggör loggning av frågan, medan det andra uttalandet faktiskt skriver ut denna logg i webbläsaren. Denna felsökningsteknik fungerar också med Laravel Eloquent.
Man kan använda den här metoden om de inte vill logga frågor. Men som sagt tidigare är detta faktiskt inte ett bekvämt sätt. För om du följer den här tekniken måste du upprepa dessa två påståenden DB::enableQueryLog()
och dd(DB::getQueryLog())
för varje fråga.
Det bättre alternativet är att logga alla frågor i loggfilen.
Loggfråga i Laravel
Jag rekommenderar en teknik för att logga frågor i Laravel. Det är ett enklare och bekvämare sätt för utvecklare. Du behöver inte gå till platsen för varje fråga och skriva koden för loggning.
Istället behöver du bara redigera AppServiceProvider.php
och du är klar.
Öppna app/Providers/AppServiceProvider.php
filen och lägg till två fasader för ‘File’ och ‘DB’ enligt följande.
use IlluminateSupportFacadesFile;
use IlluminateSupportFacadesDB;
Därefter boot()
skriver du i metoden en nedanstående kod som loggar alla dina Laravel-frågor i bakgrunden.
public function boot()
{
if(env('APP_DEBUG')) {
DB::listen(function($query) {
File::append(
storage_path('/logs/query.log'),
$query->sql. ' ['. implode(', ', $query->bindings). ']'. PHP_EOL
);
});
}
}
Nu, när en fråga körs, loggas den automatiskt i storage/logs/query.log
filen. Användaren kan visa sina frågor direkt i den här query.log
filen.
I Laravel finns det ytterligare ett sätt att logga frågorna. På detta sätt lagras dina frågeloggar i storage/logs/laravel.log
filen. För att göra det måste du placera koden nedan i din routes/web.php
fil.
DB::listen(function($sql) {
Log::info($sql->sql);
Log::info($sql->bindings);
Log::info($sql->time);
});
Det är allt! Nu är det upp till dig att använda någon av ovanstående metoder för att logga frågorna. Du behöver inte använda båda metoderna åt gången.
Det handlar om att logga frågorna i Laravel. Jag hoppas att den här artikeln kommer att vara användbar för din ansökan. Dela dina tankar och förslag i kommentarsektionen nedan.
relaterade artiklar
- Hur man skapar en anpassad 404-felsida i Laravel
- Hur man integrerar MailChimp nyhetsbrev i Laravel Application