如何在 laravel 5.2 框架中记录每个响应

How to log every response in laravel 5.2 framework

我使用以下代码记录我的 API 的每个请求和响应,但现在它不适用于 Laravel 5.2。

我尝试使用 https://laravel.com/docs/5.2/middleware#terminable-middleware 但没有成功。

use Closure;  
use Illuminate\Contracts\Routing\TerminableMiddleware;  
use Illuminate\Support\Facades\Log;

class LogAfterRequest implements TerminableMiddleware {

    public function handle($request, Closure $next)
    {
        return $next($request);
    }

    public function terminate($request, $response)
    {
        $logFile = 'log.txt';
        Log::useDailyFiles(storage_path().'/logs/'.$logFile);
        Log::info('app.requests', ['request' => $request->all(), 'response' => $response->getContent()]);
    }

}

谁能给我建议解决方案?

假设您为 routes.php 使用 web 组,您应该在 $middlewareGroups 中的 app/Kernel.php 中为 web 添加以下中间件:

\App\Http\Middleware\LogAfterRequest ::class,

您的 routes.php 应该如下所示:

Route::group(['middleware' => 'web'], function () {
  // here you put all the routes
});

我找到了解决办法。问题是我在控制器方法中添加了 "die",因为终止函数没有执行,所以没有生成日志。