4

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

}

谁能建议我解决方案?

4

2 回答 2

2

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

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

routes.php应该是这样的:

Route::group(['middleware' => 'web'], function () {
  // here you put all the routes
});
于 2016-02-07T10:33:46.497 回答
1

我有解决办法。问题是我在控制器方法中添加了“die”,因此终止函数没有执行,因此没有生成日志。

于 2016-02-09T06:38:56.307 回答