一般來說,文件/類都是相同的php
代碼,它取決於您的喜好如何組織這些。在這種情況下,根據每個班級的操作,您可以將它們存儲在不同的地方並使用不同的約定命名。例如,就你而言,請求記錄器是成爲中間件的好候選者。由於每個API請求需要記錄,以便創建一箇中間件,例如:
namespace App\Http\Middleware;
use Closure;
use App\Models\Log;
class ApiRequestLogger
{
public function handle($request, Closure $next)
{
$response = $next($request);
// Create the log entry here...
return $response;
}
}
要使用該中間件,則需要在app\Http\Kernel.php
類進行註冊。簡單地說,你可以在api
組中添加這種,或者你可以使用這樣的事情在$routeMiddleware
添加:通過單獨或組添加在路徑聲明中間件明智
'log' => \App\Http\Middleware\ApiRequestLogger::class,
現在,你可以在每個API航線使用,取決於你如何註冊它。
查詢日誌是一個有點不同(邏輯),因爲要記錄每個SQL查詢,那麼你可以在AppServiceProvider
簡單地註冊了以下事件或在該boot
方法自己的服務提供商:
\DB::listen(function ($query) {
// Your code here ...
// $query->sql
// $query->bindings
// $query->time
// \Log::debug($query->sql . ' - ' . serialize($query->bindings));
});
現在,這對我來說似乎沒有問題,但是不是放置所有與日誌相關的代碼,而是使用單獨的類/幫助程序文件來存儲與日誌記錄相關的代碼,這取決於您。如果你的查詢日誌很簡單,那麼爲什麼還要打擾另一個單獨的類/文件,但是你可以使用一個單獨的類,並將它存儲在一個全新的目錄中,即:services\QueryLogger.php
或任何感覺對你有用的東西,但沒有最好的或預定義的方式,Laravel
不會強制您組織您的代碼。只是保持簡單。
注:這些只是我的意見。關於query logging here的回答。