SVM*_*SVM 6 php api rest laravel laravel-5
我想将所有 api 日志保存在 db 中。例如,每当一个 api 被命中时,它的请求和响应都会保存在一个表中。
Lavavel 中是否有设置可以将 Rest apis 的日志启用到数据库中。
例如在 codeigniter 中:请求参数记录为:a:12:{s:13:"session_token";s:20:"OiCtWkqBLm6ScaSHOmQR";s:12:"Content-Type";s:16:"application/json" ;s:13:"缓存控制";s:8:"无缓存";s:13:"邮递员令牌";s:36:"0d13fe2e-9986-4ef2-ba46-8207dd28cd44";s:10 :"User-Agent";s:20:"PostmanRuntime/7.1.1";s:6:"Accept";s:3:" / ";s:4:"Host";s:9:"localhost" ;s:6:"cookie";s:81:"PHPSESSID=ho1oa4gjll59u4vq9usct3lev7;ci_session=ruttt4i5144hob6feq3mrv080nh2n74o";s:15:"接受编码";s:14:";def-s1, length";s:2:"19";s:10:"Connection";s:10:"keep-alive";s:7:"user_id";i:13;}
小智 13
如果你想自己构建一些东西,可终止中间件是 Laravel 中一个很好的解决方案。这种类型的中间件在所有繁重的工作完成(请求和响应处理等)后执行。
添加一个新模型来存储您的 LogEntries。创建您的迁移等。这是 Laravel 的基础内容,我不会解释... :-)
然后,从中间件开始,创建一个像这样的中间件类:
$ php artisan make:middleware RequestLoggerMiddleware
Run Code Online (Sandbox Code Playgroud)
向新类添加主体:
class RequestLoggerMiddleware
{
public function handle($request, Closure $next)
{
return $next($request);
}
public function terminate(Request $request, Response $response)
{
$logEntry = new LogEntry();
$logEntry->attribute = VALUE;
$logEntry->attribute = VALUE;
$logEntry->attribute = VALUE;
$logEntry->attribute = VALUE;
$logEntry->save();
}
}
Run Code Online (Sandbox Code Playgroud)
将中间件添加到您的 Kernel.php 中:
protected $middleware = [
...
RequestLoggerMiddleware::class,
...
];
Run Code Online (Sandbox Code Playgroud)
在中间件中,您可以向属性中添加大量内容。注入的响应和请求中有很多信息:
请求开始时间>> date('Ymd H:i:s', LARAVEL_START)
URL >> 请求->fullUrl()
请求 HTTP 方法 >> $request->method()
请求正文>> json_decode($request->getContent(), true);
请求头>> $request->header();
ip >> $request->ip()
状态码 >> $response->getStatusCode()
请求正文>> json_decode($response->getContent(), true);
顺便说一句,这是您可以使用的代码结构示例,让您对解决方案有一个基本的了解。显然,您需要向模型、迁移等添加正确的属性。但我相信您可以处理那部分...
并且:在构造函数中注入模型而不是上面的例子...... :-)
归档时间: |
|
查看次数: |
6506 次 |
最近记录: |