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

时间:2016-02-07 05:13:25

标签: php laravel laravel-5 laravel-5.2 laravel-middleware

我使用下面的代码记录了我的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()]);
    }

}

有人能建议我解决方案吗?

2 个答案:

答案 0 :(得分:2)

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

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

您的routes.php应如下所示:

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

答案 1 :(得分:1)

我有解决方案。问题是我已经添加了#34; die"在控制器方法中,由于终止函数没有执行,因此没有生成日志。