如何在 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",因为终止函数没有执行,所以没有生成日志。
我使用以下代码记录我的 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",因为终止函数没有执行,所以没有生成日志。